全部问题 > 当前问题

搞不懂怎么来的20

李瑶 2016-2-27 22:12:47

共 3 个回答

陆昕 2016-2-27 22:17:11

栈顶减栈底即49减30是19,但这个19是每两个数字之间的间隔,题目问的是元素个数即共剩下多少个数字,所以还要加一个没算进去的数字,所以是20

邢苗苗 2016-2-27 22:30:55

其实在视频中老师就讲过 可以用栈顶指针对应的数减去栈底指针对应的数是因为栈底对应的是0 所以可以直接相减 但是在这里就不是了 不能直接减 得再加1 具体问题具体分析 你借鉴下吧 也可以自己画画那个图哦

青栀如初 2016-2-27 23:35:15

亲爱哒

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

   亲爱哒,我们说:一个栈的存储空间为(1:m)的时候:

   当初始值top为top=m+1或者m=0的时候 如果题目说经过一系列出入栈操作,然后top=n,要求当前栈中元素个数的时候,那么: 元素个数=|top当前值-top初始值|

  如果题目初始top值在S(1:m)这个范围内部的时候,经过一系列出入栈操作,然后top=n,求元素个数,如下: 元素个数=|top当前值-top初始值|+1

  所以我们在求元素个数的时候:需要加1,也就是说:栈中元素的个数=栈顶指针-栈底指针+1=49-30+1=20

  所以我们选择C选项就可以了

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

问题来自:
设栈的顺序存储空间为S(0:49),栈底指针bottom=49,栈顶指针top=30(指向栈顶元素)。则栈中的元素个数为( )
A. 30
B. 29
C. 20
D. 19
答案:C
解析:设栈的顺序存储空间为S(0:49),栈底指针bottom=49,栈顶指针top=30(指向栈顶元素),那这个栈也应该是49在栈底,0在开口向上的,所以栈顶30是小于栈底的,则栈中元素=|栈顶-栈底|+1,则栈有20个元素。因此选择C。 【其实这个公式换算一下也是可以写成:元素数量=栈底-栈顶+1,或者写成:元素数量=栈底+1-栈顶,而这里的栈底+1,其实指向的就是栈底49下面的位置。虽然换算之后结果都是一样的,但公式不要死记硬背,一定要结合题目来看,把题目弄明白才是关键】