#include <stdio.h>
#include <stdlib.h>



typedef struct{
	void *prev;
	char *str;
}linkednode;

linkednode *mknode(int size){
	linkednode *new=malloc(sizeof(linkednode));
	new->prev=0;
	new->str=malloc(size);
	return new;
}


void push_elm(linkednode *new,linkednode *prev){
	printf("Create with prev=%p\n",prev);
	new->prev=prev;	
}
linkednode* pop_elm(linkednode *curr){
	if(curr->prev==0){
		printf("Return myself\n");
		return curr;
	}
	printf("%p:%s\n",curr->prev,curr->str);
	return curr->prev;
}

int actions(){
	int res;printf("1) push\n2) pop\n");
	scanf("%d",&res);return res;
}

int main(int _c,char **_v){
	linkednode *new,*prev;
	int act=3;
	prev=mknode(60);
	push_elm(prev,prev);
	while(act!=0){
		act=actions();
		switch(act){
			case 1:
				new=mknode(60);
				scanf("%s",new->str);push_elm(new,prev);
				prev=new;
				break;
			case 2:
				prev=pop_elm(prev);
				break;
		}
	}
}
