全部问题 > 当前问题

为什么

为什么下移一位是m+1,不是m

高艺洋 2018-2-24 22:03:30

共 1 个回答

海风 2018-2-26 17:03:32

应该是这样的:当初始状态的top值大于一系列操作后的top值的时候,操作后的栈中的元素个数就是初始状态的top值减去操作后的top值;反之,如果初始状态的top值小于操作后的top值,就是操作后的top值减去初始状态的top值。这样算后可知,操作后栈中的元素个数有一个,而由题该栈的栈底为m,所以最后结果为m+1。

问题来自:
设栈的存储空间为S(1:m),初始状态为top=m+1。经过一系列入栈与退栈操作后,top=m。现又在栈中退出一个元素后,栈顶指针top值为( )
A. m+1
B. 0
C. m-1
D. 产生栈空错误
答案:A
解析:栈的顺序存储空间为S(1: m),初始状态top=m+1,所以这个栈是m在栈底,1是开口向上的。所以经过一系列入栈与退栈操作后,top=m,则有1个元素,若现在又退出一个元素,那么栈顶指针下移一位,回到m+1的位置。因此这题选择A。