用一个线性链表来实现一个堆栈结构, 同时设置一个指针变量top指出栈顶元素所在链结点的位置。栈为空时,有top=NULL<br>(链栈是运算是受限的单链表,只能在链表头部进行操作,故没有必要附加头结点。栈顶指针就是链表的头指针 )<br>
类型定义
typedef struct node {<br> SElmeType data;<br> struct node *link;<br>} STNode, *STLink; <br>
判断栈空
int EMPTYS( STLink top )<br>{ <br> return top==NULL; <br> } <br>
插入(入栈)
<font color="#f15a23">不必判断是否栈满,在链表最前面插入一个新结点即可(头插法)</font>
删除(出栈)
<font color="#f15a23">先判断是否栈空,再删掉第一个结点(删前先保存以便free)</font>
取栈顶元素
先判空,再返回头指针(top)所指元素<br> if (S==NULL) exit(1);<br> else return S–>data; <br>