#include <stdio.h>
#include<stdlib.h>
typedef struct Node{
int data;
struct Node *next;
}Node;
Node *StackNode;
Node *Push(Node *top) //入栈
{
Node *s=NULL;
s=(Node *)malloc(sizeof(Node));
printf("Please input the element:");
scanf("%d",&s->data);
s->next=top;
top=s;
return top;
}
Node *Pop(Node *top) //出栈
{
Node *p=NULL;
if(top==NULL) printf("ERROR\n");
else
{
do
{
printf("%3d",top->data);
p=top;
top=top->next;
free(p);
}while(top!=NULL);
}
return top;
}
void Get(Node *top) //取栈顶元素
{
if(top==NULL) printf("ERROR\n");
else printf("%3d\n",top->data);
}
void Empty(Node *top) //判空
{
if(top==NULL) printf("栈空\n");
else printf("栈非空\n");
}
int main()
{
int n;
Node *top=NULL;
do
{
printf("\n1.元素入栈\n2.所有元素出栈\n3.取栈顶元素\n4.判断栈空\n5.exit\n请选择操作:");
scanf("%d",&n);
printf("\n");
switch(n)
{
case 1:top=Push(top);break;
case 2:top=Pop(top);break;
case 3:Get(top);break;
case 4:Empty(top);break;
case 5:break;
default:break;
}
}while(n!=5);
return 0;
}