全部问题 > 当前问题

我的问题在于他没有图片,那我们怎么知道这个栈长什么样,怎么可以单凭栈顶和栈底确定元素个数呢?视频后面都有举反例了。谢谢指导!!!

二级必过!!! 2015-9-3 18:22:03

共 1 个回答

浅↑夏忆↓瞬 2015-9-3 18:32:08

因为栈是单入单出的,所以你可以想象,就像一个瓶子,只有一个开口,往里面放东西,一个一个放,而拿出来的时候,先拿最后放的

可以确定元素个数的,可以告诉你个技巧

当栈底指针是包含在栈的顺序存储空间时,元素个数=栈顶-栈底+1

当栈底指针不是包含在栈的顺序存储空间时,元素个数=栈顶-栈底

由此题为例

元素个数=49-30+1=20

问题来自:
设栈的顺序存储空间为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下面的位置。虽然换算之后结果都是一样的,但公式不要死记硬背,一定要结合题目来看,把题目弄明白才是关键】