栈的链式存储结构
栈的链式存储结构是指用一组任意的存储单元来存储栈中的数据元素,用这种链式存储结构存储的栈称为链栈(Link Stack)。链栈的结点结构与单链表的结点结构相同,由于栈的插入和删除操作仅限制在栈顶进行,所以可用不带头结点的单链表实现栈的链式存储结构以使链栈的操作运算更加方便。在链栈中,每一个结点表示栈中的一个元素,链表的头指针称为栈顶指针,如果设栈顶指针top是node类型的变量,则top指向栈顶结点(第一个结点)。
栈的链式存储结构定义如下:
struct node /*链栈的结点类型*/{ ElemType data; /*链栈结点的数据域*/struct node *next; /*链栈结点的指针域*/};
struct node *top; /*top定义为指向结点类型的指针变量*/
一个链栈由栈顶指针top唯一确定。当top为空(NULL)时,表示该链栈为空栈;若链栈非空,则top指向栈顶结点。栈中元素的数据类型用ElemType表示,可根据需要指定其具体的类型。假设元素以a1, a2,a3,…,an的顺序进栈,则a1为栈底元素,an为栈顶元素,如图3-3所示。
![2f78fb082b288b3099b8f381671d2404.png](https://img-blog.csdnimg.cn/img_convert/2f78fb082b288b3099b8f381671d2404.png)