能换种解析的方法吗?换个能理解的?
圆梦 巨人 知名达人 2017-09-19 11:22:19
3188 5 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开口向上的),大家可以自己画画图】

共 5 个回答

    qqq 资深元老 2436天前

    这种题目一般默认的是初始状态栈都为空,栈为空的时候top=m+1,那么可以得出栈的初始状态如下图所示:image.png

    然后开始经过一系列出栈入栈,而且出栈入栈都是从栈底开始操作,于是当top指向20时,那么就是如下图所示:

    image.png

    于是,该栈里的元素个数就是m-20+1=m-19个了。

    这样讲好懂一点了吗?

    忽地笑黄 资深会员 2435天前

    回复 qqq:为什么不是m-20,为什么要加1,有时候加1,有时候不加,搞不懂。

    qqq 资深元老 2434天前

    回复 忽地笑黄:这题的初始状态,top=m+1,指向的是栈底的后一位,如果放入一个元素,top就指向m,放入两个元素top就指向m-1依次类推,到最后top指向20了,你说里面有多少元素?

    不用+1的情况是这样的,top一开始是指向栈底的,那么放入一个元素,top就指向m-1了,也就是说如果最后top指向20了,那么栈中就有m-20个元素。

    957 人气红星 2295天前

    回复 qqq:入栈出栈不是都从栈顶开始吗?

    957 人气红星 2295天前

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

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


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

  • 0

    点赞

  • 扫一扫分享朋友圈

    二维码

  • 分享

相关问题