1、桟的链式存储结构简称,链桟。链桟的空其实就是top=NULL.
2、桟的链式结构基本操作
typedef int ElemType;
typedef int Status;
//构造一个结点
typedef struct StackNode
{
ElemType data;
struct StackNode *next;
}StackNode,*LinkStackPtr;
typedef struct LinkStack
{
LinkStackPtr top; //桟顶指针
int count; //桟元素计数器
}LinkStack;
//进栈
Status Push(LinkStack *S,ElemType e)
{
LinkStackPtr p = (LinkStackPtr)malloc(sizeof(StackNode));
p->data = e ;
p->next = S->top; //将当前的栈顶元素赋值给新结点的直接后继
S->top = p ; //将新的结点赋值给栈顶指针
S->count++;
return OK;
}
//判断是否为空桟
Status StackEmpty(LinkStack *S)
{
if( S->top == NULL )
return OK;
else
return ERROR;
}
//出桟操作
Status Pop(LinkStack *S,ElemType *e)
{
LinkStackPtr p;
if(StackEmpty(S))
return ERROR;
*e = S->top->data;
p = S->top; //将栈顶指针赋值给p
S->top = S->top->next; //使得栈顶指针下移一位,指向后一节点
free(p); //释放结点p
S->count--;
return OK;
}