全部问题 > 当前问题

为什么有的元素数量等于栈顶-栈底,有的又等于|栈底-栈顶| 1呢?能不能画个图方便理解?

Cinderalla 2017-8-31 16:30:24

共 1 个回答

qqq 2017-9-4 14:40:20

最主要就是括号里有一句,栈顶指针此时是指向栈顶元素的,也就是说30这个位置上是有一个元素的,说明从30到49这个20个位置上都有元素,那么就是20个元素。

一般情况下没有括号里这句话的话,默认栈顶指针是不指向元素的,而是指向最后一个元素的下一位,也就是说如果没有括号里那句话,那就是从31到49这19个位置上存放了19个元素。

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