小白的数据结构与算法学习笔记(十一)----栈的链式存储结构及其相关操作

栈的链式存储结构比较简单,将它与单链表做个对比来看:栈顶相当于单链表的表头,top指针相当于单链表的头指针,不存在头结点,简单来说,这里的s->top指向栈顶的第一个元素。

先来看一下整个栈链的定义:

typedef struct LinkStack

         LinkStackPtr top;//充当头指针

        int count;

}

再来看一下栈链的结点的定义:

typedef struct StackNode

{

         ElemType data;

         struct StackNode *next;

}StackNode,* LinkStackPtr;

还是两块,一块存放栈的数据,一块存放指针,指向下一个元素。

下面我们来了解一下进栈与出栈在链式结构下的操作。

1、进栈

申请空间给结点p,p中存放数据e,p->data=e,进行下列操作:

p->next=s->top;

s->top=p;

最后不要忘记给s中的计数器加1,s->count++;

2、出栈

用p结点存放被删结点,释放p,计数器减1即可。

p=s->top;

s->top=p->next;

free(p);

s->count--;

注:栈只能在栈顶进行操作,所以只需要对s->top进行移动即可。

                                                                                                                                                              BY   ZJQ

猜你喜欢

转载自blog.csdn.net/qq_41641805/article/details/81479031