链栈的优点是便于多个栈共享存储空间和提高其效率,且不存在栈满上溢的情况。链栈没有头结点。头指针指向栈顶元素。
栈的链式存储类型
typedef struct StackNode
{
ElemType data;
struct StackNode *next;
} StackNode, *LinkStack;
初始化栈
void InitStack(LinkStack &S)
{
S = NULL;
}
判断栈空
Status StackEmpty(LinkStack S)
{
if(S == NULL)
return TRUE;
return FALSE;
}
进栈
Status Push(LinkStack &S, ElemType e)
{
LinkStack p=(LinkStack)malloc(sizeof(StackNode));
if (!p)
exit(OVERFLOW);
p->data=e;
p->next=S;
S = p; //S为栈顶 类似头插法
return OK;
}
出栈