栈(FILO,先进先出),作为操作受限的特殊线性表,其存储结构与操作算法与一般线性表不相同,这里做一个专门讨论。
由于栈作为操作受限的特殊线性表,因此线性表的存储结构对栈也适用,只是操作不同。栈有两种存储结构:顺序栈和链栈。
栈有栈顶(TOP)和栈底(base)。
对于静态顺序栈来说 ,入栈和出栈相对比较简单,入栈:S【top++】=e。出栈*e = S【--top】。
对于链栈,我们有一定的特殊性,程序如下:
栈的类型定义如下:
typedef struct SNode{
SElemType data;
struct SNode *next;
}SNode,*LinkStack;
置空栈
void InitLinkStack(*top)
{
top = NULL;
}
判空栈
Bool LinkStackEmpty(LinkStack *p)
{
if(!top) return TRUE;
else
return FAlSE;
}
入栈
void Push(LinkStack top ,SElemType *e)
{
StackNode *s;
s = (SNode*)mallo