我觉得通过前面的条件不足矣得出Top=m 1-X这个条件,怎么办
袁钰坤 高级粉丝 2016-08-27 16:53:37
2782 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 个回答

    赛赛 进阶大师 2824天前

    一个栈的存储空间为s(1:m)的时候; 1, 当初始值top为top=m+1或者m=0的时候 如果题目说:经过一系列出入栈操作,然后top=n,要求当前栈中元素个数的时候,如下: 元素个数=|top当前值n-top初始值| 2, 如果初始top的值在s(1:m)这个范围内部的时候,经过一系列出入栈操作,然后top=n,求元素个数,如下: 元素个数=|top当前值-top初始值|+1 当初始top=m+1的时候,然后题目说经过一系列的出入栈操作,top变成了n; 然后问你又有一个元素进栈,现在的top是多少: 1, 应该是top=n-1;注意如果n=1的话,减去1了就变成了0,很明显0不在s(1:m)中,所以会发生栈满错误; 这里可以运用上面的公式去进行验证,经过出入栈之后元素个数为|m+1-1|=m,这个栈一共只能容纳m个元素,现在已经有了m个元素了,如果再进入一个肯定会发生栈满错误的; 2, 如果说是又有一个元素出栈,那么: top=n+1;需要注意的是top是可以等于m+1的,也就是说n是可以等于m的: 同样计算出入栈之后的元素个数|m+1-m|=1,所以栈中此时有一个元素,然后进行出栈操作,1-1=0,并不会发生错误,只是栈空了而已,栈空错误是指元素个数出现负数才叫栈空错误,不能搞混淆了

    赛赛 进阶大师 2824天前

    你看会这个规律,这里的题目就会做了,哪里有不清楚的,再问我。满意请点赞并采纳,谢谢亲的支持!

    袁钰坤 高级粉丝 2824天前

    回复 赛赛当初始top=m+1的时候,然后题目说经过一系列的出入栈操作,top变成了n; 然后问你又有一个元素进栈,现在的top是多少: 为什么应该是top=n-1;

    这里可以运用上面的公式去进行验证,是用什么去验证什么

    赛赛 进阶大师 2824天前

    回复 袁钰坤:运用上面的公式去进行验证就是,经过出入栈之后元素个数为|m+1-1|=m,这个栈一共只能容纳m个元素,现在已经有了m个元素了,如果再进入一个肯定会发生栈满错误的

    最佳答案

    赛赛 进阶大师 2824天前

    回复 袁钰坤:你看我这道题是不是就能理解。现在的top是1,初始的是m+1,用m+1-1,就是m,咱们栈的范围最大就是m ,如果你现在再往里面加进去一个元素,是不是栈就满了,元素进不去了,就发生栈满错误了呢。这个是课后第11题,你可以结合规律理解一下。满意请点赞并采纳,谢谢亲的支持!

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

  • 0

    点赞

  • 扫一扫分享朋友圈

    二维码

  • 分享

相关问题