链栈:栈的链式存储结构
来源:互联网 发布:美国医学PHD 知乎 编辑:程序博客网 时间:2024/06/08 01:35
转至:http://www.nowamagic.net/librarys/veda/detail/2290
前面讲完了栈的顺序存储结构,我们现在来看看栈的链式存储结构,简称为链栈。链栈是没有附加头结点的运算受限的单链表。栈顶指针就是链表的头指针。单链表有头指针,而栈顶指针也是必须的,那干吗不让它俩合二为一呢,所以比较好的办法是把栈顶放在单链表的头部。另外,都已经有了栈顶在头部了,单链表中比较常用的头结点也就失去了意义,通常对于链找来说,是不需要头结点的。
所以链栈的结构是这样的:
对于链栈来说,基本不存在栈满的情况,除非内存已经没有可以使用的空间,如果真的发生,那此时的计算机操作系统已经面临死机崩溃的情况,而不是这个链栈是否溢出的问题。但对于空栈来说,链表原定义是头指针指向空,那么链栈的空其实就是 top=NULL 的时候。
与顺序栈有点区别,我们先看看以前单链表的结构体。
单链表的结构体定义:
typedef struct Node{ ElemType data; struct Node *next;}Node;typedef struct Node *LinkList; /* 定义LinkList */
链栈其实也是个链表,所以可以参考它的实现,栈的结点定义为:
/* 链栈结构 */typedef struct StackNode{ SElemType data; struct StackNode *next;} StackNode,*LinkStackPtr;
以上是链栈的一个结点定义,但是我们还需要加入一个栈顶指针,所以完整的定义为:
typedef int Status;/* SElemType类型根据实际情况而定,这里假设为int */typedef int SElemType;/* 链栈结构 */typedef struct StackNode{ SElemType data; struct StackNode *next;} StackNode,*LinkStackPtr;typedef struct{ LinkStackPtr top; int count;} LinkStack;
变量 count用来记录栈中元素个数,也可以将元素个数属性放在LinkStack类型中定义。
结构体定义完毕之后,后面就可以通过编程来熟悉链栈的操作了。
0 0
- 链栈:栈的链式存储结构
- 栈的链式存储结构
- 栈的链式存储结构
- 栈的链式存储结构
- 栈的链式存储结构
- 栈的链式存储结构
- 栈的链式存储结构
- 栈的链式存储结构
- 栈的链式存储结构
- 栈的链式存储结构
- 栈 -- 链式存储结构
- Day17、链式存储结构动态分配内存、栈的顺序存储结构和链式存储结构
- 栈的链式存储结构的实现
- 数据结构(栈):栈的链式存储结构
- 栈的链式存储结构与操作
- 栈的链式存储结构与操作
- 基于链式存储结构的栈
- 数据结构四栈的链式存储结构
- java synchronized详解
- python 多sheet页写入excel并发邮件
- 数学——Borel集
- 第十一讲项目三 买玫瑰
- 通过url下载服务器上的文件
- 链栈:栈的链式存储结构
- MQTT配置安全策略
- php程序转移服务器出现的后台密码不对
- Linux Min
- java调用Redis的方式
- Communications link failure
- eclipse自动生成代码
- 浅拷贝与深拷贝
- Java练习一