一起talk C栗子吧(第十七回:C语言实例--栈二)
来源:互联网 发布:会声会影x6软件下载 编辑:程序博客网 时间:2024/05/22 17:39
各位看官们,大家好,从今天开始,我们讲大型章回体科技小说 :C栗子,也就是C语言实例。闲话休提,
言归正转。让我们一起talk C栗子吧!
看官们,上一回中咱们说的是栈和特点和基本操作,最后通过顺序存储的方式实现了栈,这一回咱们继续
说栈,不过咱们这一回说的是栈的链式存储方式。
在代码中通过双向链表来实现栈的链式存储。入栈操作沿着表头到表尾的方向进行,出栈操作与其正好相
反(就把它当作双向链表的一个使用实例吧)。栈的结点可以看作是链表中的结点,对栈的操作,可以看
作是在链表中进行插入或者删除结点操作。只不过插入或者删除时要遵循栈“先进后出"的特点。栈的类型
中增加了一个size成员,可以通过它方便地得出栈的长度。与栈的顺序存储方式相比,多了一个销毁栈的
功能。因为栈中的空间都是动态分配得来的,每次入栈操作都会分配一块内存空间,与其相反,每次出栈
操作都会把内存空间释放掉。但是在实际程序中入栈和出栈并不是成对出现的,也就是说,如果使用完栈
后,没有通过出栈操作来释放动态空间,那么就会造成内存泄漏。所以我增加了销毁栈的功能,以方便在
程序的最后检查栈中动态分配来的空间是否被释放。
栈的链式存储与栈的顺序存储相比,最大的优点就是不需要事先知道栈的长度,只要内存空间足够大就能
存放足够多的元素到栈中。不过,它也有缺点,那就是入栈和出栈操作要复杂,而且效率低。总之,在实
际的程序中如果事先知道栈的长度,可以使用栈的顺序存储,如果与事先不知道栈的长度,那么可以使用
栈的链式存储,这样比较灵活一些。
看官们,正文中就不写代码了,详细的代码放到了我的资源中,大家可以点击链接下载使用。
各位看官,关于栈的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解。
- 一起talk C栗子吧(第十七回:C语言实例--栈二)
- 一起talk C栗子吧(第二十三回:C语言实例--队列二)
- 一起talk C栗子吧(第四十五回:C语言实例--深度优先遍历二)
- 一起talk C栗子吧(第四十八回:C语言实例--走迷宫二)
- 一起talk C栗子吧(第五十回:C语言实例--最小生成树二)
- 一起talk C栗子吧(第一百一十八回:C语言实例--线程死锁二)
- 一起talk C栗子吧(第一百八十九回:C语言实例--文件定位二 )
- 一起talk C栗子吧(第十六回:C语言实例--栈一)
- 一起talk C栗子吧(第一百三十回:C语言实例--C程序内存布局二)
- 一起talk C栗子吧(第五十四回:C语言实例--图的最短路径二)
- 一起talk C栗子吧(第八十五回:C语言实例--使用信号进行进程间通信二)
- 一起talk C栗子吧(第八十九回:C语言实例--使用管道进行进程间通信二)
- 一起talk C栗子吧(第九十六回:C语言实例--使用共享内存进行进程间通信二)
- 一起talk C栗子吧(第九十八回:C语言实例--使用消息队列进行进程间通信二)
- 一起talk C栗子吧(第一百一十四回:C语言实例--线程同步之信号量二)
- 一起talk C栗子吧(第一百三十六回:C语言实例--exec系列函数二)
- 一起talk C栗子吧(第一百三十九回:C语言实例--文件操作:基于文件描述符二)
- 一起talk C栗子吧( 第一百五十回:C语言实例--socket通信接口二)
- 如何选择域名和主机
- NSTimer 计时器的创建
- poj 3764 字典树求异或最大值
- 深入理解java垃圾回收机制----
- Android 双缓冲技术
- 一起talk C栗子吧(第十七回:C语言实例--栈二)
- 对onreadystatechange属性的理解
- Checked 和 Unchecked Exceptions的不同
- oracle 排序小节
- System.Data.SqlClient和System.Data.OleDb命名空间的区别
- RequestDispatcher跳转后的乱码问题
- 单例模式代码分析
- PHP session 存储方式的详细介绍
- 关于网络的总结(二)