栈的链式存储结构
栈主要是顺序存储结构,但是栈也有链式存储结构,栈的链式存储结构我们只需要了解下即可。
栈的链式存储结构中,栈顶指针和单链表的头指针合二为一。栈的链式存储结构中,栈顶是单链表的表头,栈底是表尾。
栈的链式存储结构如下:
typedef struct StackNode
{
ElemType data;
struct StackNode *next;
}StackNode,*LinkstackPointer;
typedef struct
{
LinkstackPointer top;//top指针
int count;//栈元素计数器
}LinkStack;
下面分别讲述基于链式存储结构的进栈和出栈操作。
Status Push(LinkStack *s,ElemType e)
{
LinkstackPointer p = (StackNode*)malloc(sizeof(StackNode));
p->data = e;
p->next = s->top;
s->top = p;
s->count++;
return 1;
}
出栈的代码如下:
Status Pob(LinkStack *s,ElemType *e)
{
LinkstackPointer p;
if(StackEmpty(*s))return 0;
*e = s->top->data;
p = s->top;
s->top = s->top->next;
free(p);
s->count--;
return 1;
}