PROGRAM catasta IMPLICIT NONE TYPE elemento INTEGER :: valore ! dati che interessano TYPE (elemento), POINTER :: prec ! componente di servizio END TYPE elemento INTEGER :: num, st TYPE (elemento), POINTER :: corr, temp INTEGER :: np NULLIFY(corr,temp) ! e' importante inizializzare i sinonimi PRINT *, "Trasmetti una serie di interi, 0 per terminare"! DO READ *, num IF (num == 0) EXIT ALLOCATE(temp, STAT = st) temp%valore = num temp%prec => corr ! CORR e' l'elemento precedente corr => temp END DO PRINT *,"Numeri immessi dal piu' recente:" temp => corr ! associa temp all’ultimo elemento immesso DO IF (.NOT. ASSOCIATED(temp)) EXIT ! esce se il pointer non č associato PRINT *, temp%valore ! stampa il valore temp => temp%prec ! associa temp al prossimo elemento da stampare END DO STOP END PROGRAM catasta