#include<stdio.h>
#include<stdlib.h>
struct elemento{
        int info;
        struct elemento * next;
};
typedef struct elemento ElementoDiLista; 
typedef ElementoDiLista* ListaDiElementi; //puntatore
void Testa(ListaDiElementi *lis, int v); //aggiunge un numero in testa
void Cancella(ListaDiElementi *lis); //cancella il numero di testa
void Stampa(ListaDiElementi lis); //stampa
int main() {
	int v; 
	ListaDiElementi lis=NULL;
	while(v>=0) {
		scanf("%d", &v);
		if(v>0) {
			Testa(&lis, v); 
		}
		if(v==0) {
			Cancella(&lis);
		}
	}
	if(v<0) {
		Stampa(lis);
	}
	return 0;
}
void Testa(ListaDiElementi *lis, int v) { 
	ListaDiElementi aux; //puntatore ausiliare per scorrere il vettore
	aux=(ListaDiElementi)malloc(sizeof(ElementoDiLista)); //crea spazio 
	aux->info=v; 
	aux->next=*lis;
	*lis=aux;
}

void Cancella(ListaDiElementi *lis) { 
	ListaDiElementi aux;
	if (*lis != NULL) {
		aux = *lis;
		*lis = (*lis)->next; 
		free(aux); //libera lo spazio in memoria
	} 
}
void Stampa(ListaDiElementi lis) { 
	if(lis!=NULL) { 
		printf("%d\n", lis->info);
		Stampa(lis->next); //ripete il ciclo
	}
}
