怎么判断栈的开口向上还是向下
姚业桢 圈内达人 2016-01-11 22:35:20
3017 3 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开口向上的),大家可以自己画画图】

共 3 个回答

    最佳答案

    王册册 资深达人 3052天前

    设栈的顺序存储空间为S(1:m),就我们目前做到的题目来说,如果初始值top=m+1,那么栈就是倒着压的,即向下增长;如果top=0,那么栈就是正常增长。

    姚业桢 圈内达人 3051天前

    回复 王册册:那栈底在哪头

    王册册 资深达人 3051天前

    栈底在上头,每进入一个元素,top向下移,top值减去一个1。 其实在考试中,栈的开口并不会影响解题。拿我给出的题目做例子如果初始值top=m+1,你可以赋予m一个确定的值,比如m=23,那么一开始时,TOP=24,现在TOP=20,这之间就可以简单的数出来有4个元数,对照一下答案,就可以做出来了。 因为TOP开始是m+1,与现在top值的差的绝对值就是元素个数。 就像从0开始,最开始TOP=bottom-1,即TOP=-1,现在是TOP=10,两者之差的绝对值就是元素个数即11。

您还没有登录,所以不能回复该问题
我要回复

  • 0

    点赞

  • 扫一扫分享朋友圈

    二维码

  • 分享

相关问题