| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8180 人关注过本帖
标题:请问,为什么要定义栈?定义栈有什么好处?
只看楼主 加入收藏
犬虫门心
Rank: 8Rank: 8
来 自:西安
等 级:蝙蝠侠
帖 子:209
专家分:753
注 册:2011-1-25
收藏
得分:0 
以下是引用shiqi6767在2011-1-28 22:34:14的发言:

请问,为什么要定义栈?定义栈有什么好处?
(貌似大部分都没明白我的意思!
真正的意思是----为什么要创造一个先进后出的栈?????????这样创造有什么好处!
堆栈的最重要的特点其实就是具有“记忆”性。至于这样有什么好处,可不是用一两句话就能说得清楚的。下面我给一个例子,大致说明堆栈的记忆特点:表达式的处理。
所谓表达式的处理,其实就是:“接受用户所写的一串字符串,其实是一个表达式,由数、运算符(包含括号)组成,要求计算这个表达式的结果”。例如,输入为
3+5*4^1(3加5乘以4的1次方)
计算结果应该是23(地球人都知道),但是这是计算机程序的处理结果,包括要发现可能性的输入错误。
这里牵扯所谓的运算优先级的问题,而能让先出现的优先级较低的运算符,能在“以后”运算,就得靠栈。
比如上例,如果用栈处理运算符,那么初始栈为空,然后先遇到“+”,入栈后,“+”在栈底;
当遇到“*”时,再入栈,那么栈底为“+”,栈顶为“*”,以后出栈的顺序就是先“*”后“+”,即先做乘法,再做加法。
这只是一个简单的说法,表达式的处理远比这复杂,但方法的核心就是“堆栈”。
大概明吧了吧,路漫漫其修远兮!尔会上下而求索乎?

[ 本帖最后由 犬虫门心 于 2011-1-29 20:19 编辑 ]

当一名对得起学生学费的老师,一直是我的目标!我会更努力的!
2011-01-29 20:16
丞相杀手
Rank: 6Rank: 6
等 级:侠之大者
帖 子:203
专家分:462
注 册:2011-1-11
收藏
得分:0 
以下是引用犬虫门心在2011-1-29 14:26:06的发言:

堆栈的最大特点其实是它具有“记忆”能力。这是堆栈使用时最关键的功能前提。
初学者对于数据结构的很多概念抱怨学不懂,其实不是学不懂,而是不知道“有神马作用”,从而产生了厌恶心理。但是,如果不掌握这些基本概念(往往被初学者认为“无用”),其伟大的实用性是不可能有机会了解的。
这里面有一个基本的心态问题:求速成。
要不得啊!


这样的想法往往就是把学习C语言变得复杂的罪魁祸首

斗不过疯子,不参与争论。
2011-01-29 20:44
wog
Rank: 2
来 自:南昌
等 级:论坛游民
帖 子:33
专家分:31
注 册:2010-10-2
收藏
得分:0 
去自己写一个逆波兰算法的程序吧,我觉得那个最能体现栈的优越性了
2011-01-29 21:31
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
楼主的问题虽然补充了一下,但还是感觉不明所以。

这问题有什么好问的?先进后出这个事情现很常见,先进先出也很常见。再说这进进出出的除了乱进乱出也就这两种情况,这要研究不得起个名字吗?

自然数是什么东西?为什么要定义它呀?
你觉没觉得一个苹果和一个香蕉有共同点?人们早就有数的概念,只不过要研究就起了个名字。
不是创造出的先进后出,而是有这种需要,人们才去研究的。

[ 本帖最后由 pangding 于 2011-1-29 22:46 编辑 ]
2011-01-29 22:44
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
有关图的名词很多,很繁琐,一般人承受不了这个复杂度,
所以,图可以作为区分 数据结构是入门 还是进阶 的有效工具 ,/


[ 本帖最后由 BlueGuy 于 2011-1-30 12:51 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2011-01-30 12:40
逐渐学习
Rank: 6Rank: 6
等 级:侠之大者
帖 子:113
专家分:454
注 册:2010-9-26
收藏
得分:0 
栈是一种处理方法。

帮人《---》帮己
2011-01-30 21:22
baobaoisme
Rank: 7Rank: 7Rank: 7
来 自:AVATAR
等 级:黑侠
帖 子:260
专家分:506
注 册:2010-7-9
收藏
得分:0 
学习是一个渐进的过程,很多以前认为很基础但是又很繁琐的东西,在学习上升到一定程度时候才能体会到,所以,对于基础学科,好好学就是,等到理解的时候就是你取得一定突破的时候
2011-01-31 20:47
丞相杀手
Rank: 6Rank: 6
等 级:侠之大者
帖 子:203
专家分:462
注 册:2011-1-11
收藏
得分:20 
计算机,没记错的话,是上个世纪六十年代的产物,随之产生的,还有计算机相关的一套理论。至于理论中有些什么东西,为什么有这些东西,在你达到设计者的理论水平之前,不太可能完全明白。

斗不过疯子,不参与争论。
2011-01-31 23:40
yxiangyxiang
Rank: 3Rank: 3
来 自:/\/\/\/\/
等 级:论坛游侠
帖 子:130
专家分:186
注 册:2012-1-29
收藏
得分:0 
潭浩强书上的链表是属于 栈 吗
2012-02-12 20:38
快速回复:请问,为什么要定义栈?定义栈有什么好处?
数据加载中...
 
   



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

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