| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2722 人关注过本帖
标题:动态栈的实现
只看楼主 加入收藏
追寻XT
Rank: 2
等 级:论坛游民
威 望:1
帖 子:37
专家分:32
注 册:2014-8-20
结帖率:83.33%
收藏
 问题点数:0 回复次数:6 
动态栈的实现
花了两个小时,写完了栈类型的类型与操作的主要定义与实现,遍历函数中函数指针的地方还是不太明白,代码放上来,大家看看,希望批评指正!!!接下里打算写几个栈的应用实例,如号括匹配,简单的算是计算。。。。
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册



[此贴子已经被作者于2016-10-11 14:17编辑过]

搜索更多相关主题的帖子: 动态 
2016-10-11 14:16
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:0 
把代码以贴图的形式发上来是不是不希望别人直接使用?  是在保护版权吗?  

代码是用眼睛看的吗?   算了,希望真的会有大神给你看看,给你批评指正吧。

φ(゜▽゜*)♪
2016-10-11 14:34
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:0 
我看了你的堆栈结构。我认为是不太合适的,你的base分明是个ElementType数组(由stack_init_size在编译的时候确定),stacksize指示堆栈内容量(话说这个容量不是常量stack-init-size吗?),top居然又是个指针指向栈顶地址(都用数组了,又何必搞这个).
1.你要让base做数组,那么你只需要一个unsigned int 指示栈顶元素就好。至于堆栈状态是不是满的,反正有stack-init-size在何必大费周章在每个结构体里浪费空间做无意义的劳动?
2.我见过链表结构是 struct {ElementType*base;ElementType*Top;int StackSize;}的,不过人家的堆栈是base是个链表,Top指向base链表的尾结点(最后插入的元素),StackSize记录堆栈内现有容纳元素多少(可有可无,可以在后期通过遍历base链表得到)。用链表方式做堆栈,堆栈容量理论上是可以“无限大”的。用数组方法做堆栈如果想要健壮点的话可以效仿哈希算法的ReHash,每当数组内元素达到一定比例就构造一个双倍长度的数组,并将旧数组的元素复制过去。用新数组取代旧数组。效率上当然是远不如链表的方便快捷,但是数组构造法不需要频繁的malloc,free,时间上可能会更好些。

φ(゜▽゜*)♪
2016-10-11 14:49
追寻XT
Rank: 2
等 级:论坛游民
威 望:1
帖 子:37
专家分:32
注 册:2014-8-20
收藏
得分:0 
回复 2楼 书生牛犊
不好意思,是怕的代码太多,复制粘贴出错,另一个是想把文件名带上,下次一定会注意的,谢谢!
2016-10-11 18:37
追寻XT
Rank: 2
等 级:论坛游民
威 望:1
帖 子:37
专家分:32
注 册:2014-8-20
收藏
得分:0 
回复 3楼 书生牛犊
扩大容量,我用的是realloc()函数,stacksize,只在Stack结构体中,占用了内存空间,但是有些多余,谢谢你的意见,我会继续完善的。
2016-10-11 19:03
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
花了几分钟,把你的代码看完.

没有什么出彩的地方,中规中矩的实现书上的代码,并不值得关注

倒是因为不理解函数指针所以栈的遍历化蛇添足



[fly]存在即是合理[/fly]
2016-10-12 09:15
追寻XT
Rank: 2
等 级:论坛游民
威 望:1
帖 子:37
专家分:32
注 册:2014-8-20
收藏
得分:0 
回复 6楼 azzbcc
确实,visit()函数的有些多余,但是也有好处,compare()函数基本不用修改,针对不同的数据结构,只修改visit()就可以了,才开始学数据结构,只想不书上的算法用代码实现一遍,还没有找到正确的学习方法。。。。。。
2016-10-12 13:30
快速回复:动态栈的实现
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015752 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved