链栈的定义(注意指针的方向,与单链表相反)
typedef struct StackNode {
SElemType data;
struct StackNode* next;
}StackNode,*LinkStack;
链栈的初始化
void InitStack(LinkStack& S)
{
S = NULL; //构造一个空栈,栈顶指针置为空,没必要设置头节点
return OK;
}
判断链栈是否为空
Status StackEmpty(LinkStack S)
{
if (S == NULL) return TRUE;
else return FALSE;
}
链栈的入栈
Status Push(LinkStack& S, SElemType e)
{
p = new StackNode;
p->data = e;
p->next = S;
S = p;
return OK;
}
链栈的出栈
Status Pop(LinkStack& S,SElemType &e)
{
if (S = NULL) return ERROR;
e = S->data;
p = S;
S = S->next;
delete p;
return OK;
}