1 //链栈是运算受限的单链表,只能在链表头部进行操作
2 typedef struct StackNode{
3 SElemType data;
4 struct StackNode *next;
5 }StackNode,*LinkStack;
6 LinkStack S;
7 //链栈的初始化
8 void InitStack(LinkStack &S){
9 S=NULL;
10 return OK;
11 }
12 //判断链栈是否为空
13 Status StackEmpty(LinkStack S){
14 if(S==NULL) return TURE;
15 else return FALSE;
16 }
17 //链栈的入栈
18 Status Push(LinkStack &S,SElemType e){
19 p=new StackNode; //生成新节点
20 p->data=e; //将新节点的数据域为e
21 p->next=S; //将新节点插入栈顶
22 S=p; //修改栈顶指针
23 return OK;
24 }
25 //链栈的出栈
26 Status Pop(LinkStatus &S,SElemType &e){
27 if(S==NULL) return ERROR;
28 e=S->data;
29 p=S;
30 S=S->next;
31 free(p);
32 return OK;
33 }
34 //取栈顶元素
35 SElemTtype GetTop(LinkStack S){
36 if(S!=NULL)
37 return S->data;
38 }