看不明白,第七题
杨慧 核心会员 2016-08-21 09:09:44
2594 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 个回答

    赛赛 进阶大师 2831天前

    一个栈的存储空间为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,并不会发生错误,只是栈空了而已,栈空错误是指元素个数出现负数才叫栈空错误,不能搞混淆了

    赛赛 进阶大师 2831天前

    这个是栈的做题规律,下面我给你具体讲讲这道题。 这道题符合第一条规律,因此我们用|20-(m+1)|,也就是|19-m|,又因为m大于19,所以去掉绝对值符号就是m-19啦,把上面的规律学会了,关于栈的题目你就不发愁了,都会做了,满意请点赞并采纳,谢谢亲的支持!

    范宇 知名达人 2831天前

    如果不明白,在观看一遍视频

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

  • 0

    点赞

  • 扫一扫分享朋友圈

    二维码

  • 分享

相关问题