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" DO READ *, num IF (num == 0) EXIT IF (.NOT. ASSOCIATED(primo)) THEN ALLOCATE(primo, STAT = st) nr = nr + 1 IF (st > 0) THEN PRINT *, "Errore allocazione elemento N. ", nr STOP END IF ultimo => primo ELSE ALLOCATE(ultimo%prox) write(*,*) loc(ultimo),loc(ultimo%prox) ultimo => ultimo%prox ENDIF ultimo%valore=num NULLIFY(ultimo%prox) END DO PRINT *, "Si presentano i numeri in ordine di immissione:" corr => primo DO IF (.NOT. ASSOCIATED(corr)) EXIT PRINT *, corr%valore write(*,*) loc(corr),loc(corr%prox) corr => corr%prox END DO END PROGRAM coda