什么叫堆栈

如题... 如题 展开
 我来答
百度网友f1de801
2007-02-07
知道答主
回答量:47
采纳率:0%
帮助的人:13.6万
展开全部
堆栈是一种执行“后进先出”算法的数据结构。

设想有一个直径不大、一端开口一端封闭的竹筒。有若干个写有编号的小球,小球的直径比竹筒的直径略小。现在把不同编号的小球放到竹筒里面,可以发现一种规律:先放进去的小球只能后拿出来,反之,后放进去的小球能够先拿出来。所以“先进后出”就是这种结构的特点。

堆栈就是这样一种数据结构。它是在内存中开辟一个存储区域,数据一个一个顺序地存入(也就是“压入——push”)这个区域之中。有一个地址指针总指向最后一个压入堆栈的数据所在的数据单元,存放这个地址指针的寄存器就叫做堆栈指示器。开始放入数据的单元叫做“栈底”。数据一个一个地存入,这个过程叫做“压栈”。在压栈的过程中,每有一个数据压入堆栈,就放在和前一个单元相连的后面一个单元中,堆栈指示器中的地址自动加1。读取这些数据时,按照堆栈指示器中的地址读取数据,堆栈指示器中的地址数自动减 1。这个过程叫做“弹出pop”。如此就实现了后进先出的原则。

堆栈是计算机中最常用的一种数据结构,比如函数的调用在计算机中是用堆栈实现的。
堆栈可以用数组存储,也可以用以后会介绍的链表存储。
下面是一个堆栈的结构体定义,包括一个栈顶指针,一个数据项数组。栈顶指针最开始指向-1,然后存入数据时,栈顶指针加1,取出数据后,栈顶指针减1。

#define MAX_SIZE 100
typedef int DATA_TYPE;
struct stack
{
DATA_TYPE data[MAX_SIZE];
int top;
};

参考资料: http://zhidao.baidu.com/question/3695676.html?

落雁无痕
推荐于2017-11-28 · TA获得超过11.5万个赞
知道大有可为答主
回答量:6096
采纳率:83%
帮助的人:3407万
展开全部
堆栈是内存区开辟出来为函数中定义的变量(除了new以外的定义)提供存储空间的区域。
顾名思义,数据在堆栈中 的存储就是一个一个堆上去的,就是说后放的变量存在最上面(栈顶),所以从堆栈中取出变量时它最先被取出,(后进先出)。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
樊知
2007-02-07 · TA获得超过310个赞
知道小有建树答主
回答量:507
采纳率:0%
帮助的人:157万
展开全部
我先介绍堆栈概念:
日常生活中有这样的现象,家里洗的碗,一只一只垒起来,最后洗的放在最上面,而最先洗的放在最下面。取时正好相反,先从最上面取。这种现象用一句话来概括上面的已经说过了。
在我门用的存储器中也可以实现这样一种功能(区域)来存放数据,就叫做堆栈。那为什么要涉这个堆栈呢:原因很简单:如果要存放一批数据,每一个数据都需要记住其所在的地址单元,比较麻烦。如果规定数据一定是一个接一个地存放,那么只要知道第一个数据所在的单元地址就可以了, | 66H | 2CH
| 83H | 2BH
| 3FH | 2AH
| 39H | 29H
| DEH | 28H
(SP)= 27H → | 26H | 27H
| 33H | 26H
如上表:假设第一个数据放在27H,那么第二个,三个 四个就一定在28H,29H,2AH 。利用这种方法(堆栈)来放数据可以简化操作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
50分钱
2007-02-07 · TA获得超过6.5万个赞
知道大有可为答主
回答量:3834
采纳率:0%
帮助的人:3375万
展开全部
堆栈
duīzhàn
临时寄存货物的地方
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式