#include<stdio.h>
#include<stdlib.h>
typedef struct Lnode
{
int data;
struct Lnode *next;
}Lnode,*stackNode;
Lnode push(stackNode s,int e);
void pop(stackNode s);
void main()
{
int choose;
int input;
int a;
stackNode top,s;
s=(Lnode)malloc(sizeof(Lnode));
s->next=NULL;
while(1){
printf(“请输入您的选择:\n1.入栈2.出栈3.退出\n”);
scanf("%d",&input);
switch(input)
{
case 1:
printf(“请输入您要入栈的数据,输入0结束,暂不支持0入栈:\n”);
scanf("%d",&a);
while(a)
{
top=push(s,a);
printf(“请输入您要入栈的数据,输入0结束,暂不支持0入栈:\n”);
scanf("%d",&a);
}
break;
case 2:
pop(s);
break;
case 3:return;
default:printf(“操作有误,强制退出!”);
break;
}
}
}
//头插法构造链表作栈使用
Lnode *push(stackNode s,int e)
{
stackNode p,q;
//p是头结点
p=s;
//q是新插入结点
q=(stackNode)malloc(sizeof(Lnode));
q->data=e;
q->next=NULL;
q->next=p->next;
p->next=q;
return s;
}
void pop(stackNode s)
{
stackNode p,q;
p=s;
if(p->next){
printf(“出栈数据为:%d\n”,p->next->data);
q=p->next;
p->next=q->next;
free(q);
}else{
printf(“栈已为空,请添加数据入栈!\n”);
}
}