|
栈的链式存储也叫链栈,我们把插入和删除均在链表表头进行的链表称为链栈。链栈也分带头结点和不带头结点两种。带头结点的链栈操作比较方便。
|
|
|
|
|
|
.栈以链表的形式出现,链表(不带头结点)首指针为S,即栈顶为S,链表尾结点为栈底。
|
|
|
.初始化时,S=NULL(不带头结点);S=(LStack *),malloc(sizeof(LStack)),S->next=NULL(带头结点)。
|
|
|
.栈顶指针的引用为S(不带头结点)或S->next(带头结点),栈顶元素的引用为S->data(不带头结点)或S->next->data(带头结点)。
|
|
|
.栈空条件为S==NULL(不带头结点)或S->next==NULL(带头结点)。
|
|
|
.进栈操作和出栈操作与单链表在开始结点的插入和删除操作一致。
|
|
|
|
1)初始化initstack(LStack *S)
|
|
|
|
2)压栈(入栈)push(LStack *S, ElemType x)
|
|
|
|
3)退栈(出栈)pop(LStack *S, ElemType *x)
|
|
|
|
4)读栈顶元素gettop(LStack *S, ElemType *x)
|
|
|
|
|
|