判定一个顺序栈为栈满的条件

判定一个顺序栈为栈满的条件

表示顺序栈的数组下标如果从0开始,栈空的条件是top==-1,栈满的条件是top==maxsize-1;如果从1开始,top==1表示栈空,top==maxsize表示栈满。

栈的元素依次存放在一个一维数组中。下标小的一端作为栈底。用一个变量记录栈顶位置,称“栈顶指针”。

扩展资料:

栈的顺序存储结构是利用内存中的一片起始位置确定的连续存储区域来存放栈中的所有元素,另外为了指示栈顶的准确位置,还需要引入一个栈顶指示变量top,采用顺序存储结构的栈称为顺序栈(sequence stack)。

设数组data[MAXSIZE]为栈的存储空间,其中MAX-SIZE是一个预先设定的常数,为允许进栈结点的最大可能数目,即栈的容量。初始时栈空,top等于0。当top不等于0时,data[0]为栈底元素,即为当前停留在栈中时间最长的元素。

而data[top-1]为最后入栈的元素,即为栈顶元素。当top==MAXSIZE时,表示栈满,如果此时再有结点进栈,将发生称之为“上溢”(语法上表现为“数组越界”)的错误,而当top==0时再执行出栈操作,将发生称之为“下溢”的错误。

给出了栈容量为6时,入栈、出栈操作以及栈空、栈满等几种典型的栈状态。由于顺序存储结构多采用一维数组存放栈,因此必须特别注意“栈上溢”错误的发生;在实现入栈操作时,先判断是否栈满(stack full),如果栈满,及时处理。

参考资料来源:百度百科-顺序栈

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-09-02

栈满条件是top==maxsize-1。

顺序栈:使用一组连续的内存依次保存栈中的数据,定义一个top变量来保存栈顶序号。

栈结构是“后进先出”的原则。

栈的最基本操作有两个:push(入栈) + pop(出栈)。

栈空条件是top==-1,栈空表明data中一个数都没有。

栈满条件是top==maxsize-1,由于数组下标从0开始,因此栈空的时候应该为0-1,栈满表明data中数据都占满了,所以应该取数组的最大值,maxsize-1。

扩展资料:

顺序栈元素"入栈":

1、比如,模拟栈存储 {1,2,3,4} 的过程。最初,栈是"空栈",即数组是空的,top 值为初始值 -1。




2、首先向栈中添加元素 1,我们默认数组下标为 0 一端表示栈底,因此,元素 1 被存储在数组 a[1] 处,同时 top 值 +1。



3、采用以上的方式,依次存储元素 2、3 和 4,最终,top 值变为 3。



顺序栈元素"出栈":

将图中的元素 2 出栈,则需要先将元素 4 和元素 3 依次出栈。需要注意的是,当有数据出栈时,要将 top 做 -1 操作。


参考资料来源:百度百科-顺序栈

本回答被网友采纳
第2个回答  2017-12-16
当S.top初始值为-1时,S.top = Maxsize - 1;为栈满的条件;
当S.top初始值为0时,S.top = Maxsize ;为栈满的条件。
第3个回答  2016-06-25
因为用一个长度为n的数组顺序储存一个栈然而数组是从0~n-1栈空为top==n那么栈满为top==1
相似回答