# define null 0
typedef struct stacknode{int data;
struct stacknode *next;}stacklink;
typedef struct {stacklink *top;int stacksize;}stackk;
initlink(stackk *s)
{s->top=(stacklink *)malloc(sizeof(stacklink));
s->top->data=0;
s->top->next=null;
}
int poplink(stackk *s)
{stackk *p;int v;
if(s->top->next==null) printf("the stackis empty\n");
else {v=s->top->next->data;
p=s->top->next;
s->top=s->top->next;
free(p);
return v;
}
}
int pushlink(stackk *s,int x)
{stackk *p;
p=(stacklink *)malloc(sizeof(stacklink));
p->data=x;
p->next=s->top->next;
s->top->next=p;
}
int gettop(stackk *s)
{int e;
if(s==null) printf("the stack is empty!\n");
e=s->top->next->data;
return e;
}
display(stackk *s)
{stackk *p;
p=s->top->next;
printf("display the stacklink:\n");
if (s->top=null) printf("the stacklink is empty!\n");
else {while(p)
{printf("->%d",p->data);
p=p->next;}
}
}
main(stacklink *p)
{int n,k,i,select,h,x1,x2;
printf("create a empty stacklink!\n");
initlink(p);
printf("input a stacklink length:\n");
scanf("%d",&n);
for (i=1;i<=n;i++)
{printf("input a stacklink value:\n");
scanf("%d",&k);
pushlink(p,k);
}
printf("select 1:display()\n");
printf("select 2:pushlink()\n");
printf("select 3:poplink()\n");
printf("select 4:gettop()\n");
printf("input a your select(1-4):\n");
scanf("%d",&select);
switch(select)
{case 1:{display(p);break;}
case 2:{printf("input a push a value :\n");
scanf("%d",&h);
pushlink(p,h);
display(p);
break;}
case 3:{x1=poplink(p);printf("x1->%d\n",x1);
display(p);
break;}
case 4: {x2=gettop(p);printf("x2->%d",x2);
break;}
}
}