PROGRAM coda IMPLICIT NONE TYPE elemento INTEGER :: valore TYPE (elemento), POINTER :: prox END TYPE elemento TYPE (elemento), POINTER :: primo, ultimo, corr INTEGER :: num, st, nr NULLIFY(primo, ultimo, corr) PRINT *, "Trasmetti una serie di interi, 0 per terminare" nr = 0 READ *, num IF (num .GT. 0) THEN nr = nr + 1 ALLOCATE(primo, STAT = st) IF (st > 0) THEN PRINT *, "Errore allocazione elemento N. ", nr STOP END IF primo%valore = num NULLIFY(primo%prox) ultimo => primo DO READ *, num IF (num == 0) EXIT ALLOCATE(corr, STAT = st) nr = nr + 1 IF (st > 0) THEN PRINT *, "Errore allocazione elemento N. ", nr STOP END IF corr%valore = num NULLIFY(corr%prox) ultimo%prox => corr ultimo => corr END DO END IF PRINT *, "Si presentano i numeri in ordine di immissione:" corr => primo DO IF (.NOT. ASSOCIATED(corr)) EXIT PRINT *, corr%valore corr => corr%prox END DO END PROGRAM coda