#include<stdio.h>
#include <stdlib.h>
#define ERROR 0
#define OK 1
typedef void Status;
typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode * next;
} LNode,*Linklist;
Status Push(Linklist &L, ElemType e);
Status Pop(Linklist &L, ElemType &e);
void Init(Linklist &L);
void traversal(Linklist L);
void display();
int main()
{
display();
return 0;
}
void display()
{
Linklist h;
ElemType e;
Init(h);
int select;
printf("1.初始化\n");
printf("2.插入\n");
printf("3.删除\n");
printf("4.遍历\n");
printf("5.退出\n");
while(1)
{
printf("请输入想要执行的功能:");
scanf("%d",&select);
switch(select)
{
case 1:
Init(h);
break;
case 2:
printf("请输入要插入的整数;");
scanf("%d",&e);
Push(h,e);
traversal(h);
break;
case 3:
Pop(h,e);
printf("出栈的元素是:%d\n",e);
printf("剩余元素是:");
traversal(h);
break;
case 4:
traversal(h);
break;
case 5:
return;
}
}
}
//初始化
Status Init(Linklist &L)
{
L=(Linklist)malloc(sizeof(LNode));
L->next=NULL;
}
//入栈,头插
Status Push(Linklist &L, ElemType e)
{
Linklist s=(Linklist)malloc(sizeof(LNode));
s->data=e;
s->next=L->next;
L->next=s;
}
//出栈
Status Pop(Linklist &L, ElemType &e)
{
Linklist temp,pre;
pre=L;
temp=L->next;
e=temp->data;
L=L->next;
free(pre); //释放结点
}
Status traversal(Linklist L)
{
Linklist temp=L->next;
while(temp)
{
printf("%d ",temp->data);
temp=temp->next;
}
printf("\n");
}
运行结果