求教求教!
闫湉湉 圈内达人 2016-02-14 14:02:47
2424 7 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开口向上的),大家可以自己画画图】

共 7 个回答

    最佳答案

    青栀如初 资深大师 3019天前

    亲爱哒

       不好意思,刚刚才看到问题

       S(1:m)指的是栈的存储空间,最开始的时候栈底指针是1,栈顶指针是m

       我们说:栈在元素入栈和出栈哒时候都是倒压着的

       栈中的元素与栈底和栈顶是有关系哒,它们之间哒关系是:栈中元素个数=栈顶指针-栈底指针。如果我们在一道题中知道了栈底和栈顶就可以相应哒求出栈中元素的个数了。

       对于这道题我们说;

       我们说:栈中哒元素采用“先进后出”的原则(也就是最先进去的元素就到了栈的最下面了,所以最先进入栈的元素要最后才能出来),所以我们说:栈是倒压着的

       亲爱哒,我们说:栈的主要性质就是先进后出,就像叠碗一样,要把下面的碗拿掉,需先把上面的拿掉一样,所以我们说:栈是开口向下的(也就是栈是倒压着的,它们都是一样的,即:栈哒元素是先进后出的)如果你这样形象理解的话,应该就好理解了。

    这个题目,你想如果放了一个元素,那么TOP就等于m+1-1 =m

    放两个元素,Top就等于 m+1-2=m-1

    现在Top=20 也就是m-19 

    所以选C,也就是m-19而不是19

     也就是向上生长堆栈和向下生长堆栈之分

     根据题意,栈空间如图所示:


    巴巴爸爸.jpg

    也就是说,栈是向上增长的,每次压入一个元素,栈的TOP指针向上移动一位。

    当压入第一个元素时,TOP指针指向m+1-1 = m

    当压入第二个元素时,TOP指针指向m+1-2 = m-1

    ......

    以此类推,

    当压入第N个元素时,TOP指针指向m+1-N = 20

    则N = m+1-20 = m-19   所以答案应该选择C选项

      祝愿亲爱哒在新哒一年中有棒棒的BODY,满满的MONEY,多多的HAPPY,心情天天很SUNNY,无忧无虑像个BABY,总之,新年你最快乐。”亲爱哒,我们一起HAPPY !High起来吧!Cheers!么么哒亲爱哒!

       亲爱哒,“望采纳哟!”如果还有什么不懂哒问题我们还可以一起讨论哟,相信我们一定会把问题解决哒,么么哒亲爱哒!        

    闫湉湉 圈内达人 3019天前

    回复 青栀如初:倒着和正着有什么区别吗?


    青栀如初 资深大师 3019天前

    亲爱哒,我们在讲栈中的元素时由于其遵循的是:先进后出的原则,所以我们说栈中的元素是倒压着的,而我们后面学习队列就会发现队列中的元素的排列是正着的,它和栈中元素的排列正好相反,所以我们要把它们对比记忆。

    闫湉湉 圈内达人 3019天前

    为什么倒着压的,出栈一个要+1呢?


    青栀如初 资深大师 3019天前

    回复 闫湉湉:亲爱哒

       你可以看看刚刚我讲解的另一道题,如果懂了也就明白为什么会+1了

    闫湉湉 圈内达人 3019天前

    回复 青栀如初:还是不明白

    闫湉湉 圈内达人 3019天前

    回复 青栀如初:?????

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

  • 0

    点赞

  • 扫一扫分享朋友圈

    二维码

  • 分享

相关问题