大一学习C语言和数据结构的菜鸟的困惑(VC++)

linbin0182 发布于 2013/04/05 21:43
阅读 350
收藏 1
那个数据结构的二叉树的中序非递归遍历为什么很多人用顺序栈啊,我在电脑上搜了很多代码都是顺序栈,难道链式栈不能用吗?或者有什么样的原因?? ,求各位大神开导开导(用C语言,数据结构)
加载中
0
cut
cut
链式栈速度慢,还不如递归
cut
cut
回复 @中山野鬼 : = =.....,都说是男的了,诱惑得了的眼力都有问题。
中山野鬼
中山野鬼
我说你小子,每次都用头像诱惑人。还好我是野鬼。哈哈。。
linbin0182
linbin0182
回复 @cut : 哦哦,大概了解了,谢谢你啊,纠结了很多天了^_^
cut
cut
回复 @涅槃-12345 : 递归比非递归慢在哪,不就是函数调用的时候参数压榨,寄存器保护,寄存器恢复的时间,其实对于平衡树来说时间基本可以忽略,链式栈指针操作时间是要比顺序的操作多,顺序栈只要一个参数就可以维护整个栈的状态,而且顺序栈相对来说更能被cpu cache,况且很多链式栈都是操作都被封装过,操作的时候函数调用,那样的话,性能跟递归没啥区别,甚至更差
linbin0182
linbin0182
那为什么很多非递归用顺序栈啊?
1
liangtee
liangtee

同学你好!

你现在考虑这些问题有些舍本逐末,或者说是没有意义的。

学理论的时候一定要建立"抽象"的思想:既然是要实现非递归,那就给我给我一个栈好了。至于这个栈怎么实现的不用去管它,你只要吃透“递归其实就是压栈和出栈”这一原理就行了。至于该用哪种栈去模拟它,怎么实现它这都是工程上的技巧,等你真的遇到能让你纠结于哪种实现更优的实际问题时你自然会得出答案。

0
中山野鬼
中山野鬼
先走路,再跑步。哪种栈的操作和实现方式简单,就先用哪种。学数据结构,没到优化的地步。关键把原理搞清楚。除非你本身再学习各种栈的用法。
linbin0182
linbin0182
恩恩,就是说顺序栈的操作和实现更方便喽?
0
刘地
刘地
数组不管怎么看也比链表好操作吧,也就是可能溢出罢了,红黑树或者AVL树的话,100个单位就能保证几乎绝对不会溢出了。
返回顶部
顶部