码迷,mamicode.com
首页 > 编程语言 > 详细

一起talk C栗子吧(第十七回:C语言实例--栈二)

时间:2015-06-14 18:38:11      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:


各位看官们,大家好,从今天开始,我们讲大型章回体科技小说 :C栗子,也就是C语言实例。闲话休提,

言归正转。让我们一起talk C栗子吧!


看官们,上一回中咱们说的是栈和特点和基本操作,最后通过顺序存储的方式实现了栈,这一回咱们继续

说栈,不过咱们这一回说的是栈的链式存储方式。


在代码中通过双向链表来实现栈的链式存储。入栈操作沿着表头到表尾的方向进行,出栈操作与其正好相

反(就把它当作双向链表的一个使用实例吧)。栈的结点可以看作是链表中的结点,对栈的操作,可以看

作是在链表中进行插入或者删除结点操作。只不过插入或者删除时要遵循栈“先进后出"的特点。栈的类型

中增加了一个size成员,可以通过它方便地得出栈的长度。与栈的顺序存储方式相比,多了一个销毁栈的

功能。因为栈中的空间都是动态分配得来的,每次入栈操作都会分配一块内存空间,与其相反,每次出栈

操作都会把内存空间释放掉。但是在实际程序中入栈和出栈并不是成对出现的,也就是说,如果使用完栈

后,没有通过出栈操作来释放动态空间,那么就会造成内存泄漏。所以我增加了销毁栈的功能,以方便在

程序的最后检查栈中动态分配来的空间是否被释放。


栈的链式存储与栈的顺序存储相比,最大的优点就是不需要事先知道栈的长度,只要内存空间足够大就能

存放足够多的元素到栈中。不过,它也有缺点,那就是入栈和出栈操作要复杂,而且效率低。总之,在实

际的程序中如果事先知道栈的长度,可以使用栈的顺序存储,如果与事先不知道栈的长度,那么可以使用

栈的链式存储,这样比较灵活一些。


看官们,正文中就不写代码了,详细的代码放到了我的资源中,大家可以点击链接下载使用。


各位看官,关于栈的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解。

一起talk C栗子吧(第十七回:C语言实例--栈二)

标签:

原文地址:http://blog.csdn.net/talk_8/article/details/46492209

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!