全部问题 > 当前问题

初始状态不是是桟底吗,怎么又变成Top,Top的意思是顶部的意思啊,搞不明白

黄荣珍 2017-9-16 09:41:22

共 2 个回答

王佳佳 2017-9-16 15:40:58

栈底是要先看这个存储空间的是从哪儿到哪儿,然后再看初始状态是什么,最后才判断的哪个在栈底哦,多做些题练习就好。

957 2018-2-7 19:28:09

初始状态top=m+1,说明这个栈是m在栈底,1是开口向上的(遇到这类题,这个死记住)。也就是这个栈的栈顶和栈底指针指向m+1(一般的,栈底指向首元素的前一位置

可以得出结论m<m+1,所以这个栈的排列顺序是上面小,下面大。我们求的元素个数是正数,因此要大的减去小的(即下面的减去上面的),答案就是m+1-20=m-19了QQ图片20180207192111.png


问题来自:
设栈的顺序存储空间为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开口向上的),大家可以自己画画图】