全部问题 > 当前问题

第八题的解释“设栈的储存空间S(1:m)top=m+1,则m在栈底,1在栈顶”那是不是只要储存空间为(a:1)(a为任意数),top不是零,则栈顶就为a吗?


白洁 2016-8-30 21:32:08

共 4 个回答

张凯欣 2016-8-30 21:35:31

如果你不着急的话我再看一遍再给你说,我有点忘了

张凯欣 2016-8-30 21:49:56

我感觉top是不是0和栈顶没关系,设栈的储存空间S(1:m)top=m+1,则m在栈底,1在栈顶”这句话的意思应该是:top=m+1  大于m,所以m才是栈底的。只是我的个人看法,你可以详情问下助教或者老师

赛赛 2016-8-30 21:55:16

你看一下我这个总结的规律,适用于所有题目的,你掌握一下,不清楚的再问我好吧,满意请点赞并采纳,谢谢亲的支持!

赛赛 2016-8-30 21:56:07

一个栈的存储空间为s(1:m)的时候; 1, 当初始值top为top=m+1或者m=0的时候 如果题目说:经过一系列出入栈操作,然后top=n,要求当前栈中元素个数的时候,如下: 元素个数=|top当前值n-top初始值| 2, 如果初始top的值在s(1:m)这个范围内部的时候,经过一系列出入栈操作,然后top=n,求元素个数,如下: 元素个数=|top当前值-top初始值|+1 当初始top=m+1的时候,然后题目说经过一系列的出入栈操作,top变成了n; 然后问你又有一个元素进栈,现在的top是多少: 1, 应该是top=n-1;注意如果n=1的话,减去1了就变成了0,很明显0不在s(1:m)中,所以会发生栈满错误; 这里可以运用上面的公式去进行验证,经过出入栈之后元素个数为|m+1-1|=m,这个栈一共只能容纳m个元素,现在已经有了m个元素了,如果再进入一个肯定会发生栈满错误的; 2, 如果说是又有一个元素出栈,那么: top=n+1;需要注意的是top是可以等于m+1的,也就是说n是可以等于m的: 同样计算出入栈之后的元素个数|m+1-m|=1,所以栈中此时有一个元素,然后进行出栈操作,1-1=0,并不会发生错误,只是栈空了而已,栈空错误是指元素个数出现负数才叫栈空错误,不能搞混淆了

问题来自:
设栈的顺序存储空间为S(1: m),初始状态为top=m+1。现经过一系列入栈与退栈运算后,top=20,则当前栈中的元素个数为( )
A. 30
B. 20
C. m-19
D. m-20
答案:C
解析:栈的顺序存储空间为S(1: m),初始状态top=m+1,说明这个栈是m在栈底,1是开口向上的。这题可以假设栈中有x个元素,当X=0时,也就是栈中没有元素,则Top=m+1,当X=m时,也就是栈满,则Top=1,由此可以得出Top=m+1-X,就可以得出X=m+1-Top。 所以说这个时候栈中的元素=m+1-Top,当Top=20时,栈中元素=m-19。所以选择C。 【注意:没有规定栈中栈底必须是0,这个在课程中也说过了。(如果说初始状态top=0,说明这个栈是1在栈底,m开口向上的),大家可以自己画画图】