题目
设栈的顺序存储空间为S(1:m),初始状态为top=0。现经过一系列正常的入栈与退栈操作后,top=m+1,则栈中的元素个数为( )。A. 不可能B. m+1C. 0D. m
设栈的顺序存储空间为S(1:m),初始状态为top=0。现经过一系列正常的入栈与退栈操作后,top=m+1,则栈中的元素个数为( )。
A. 不可能
B. m+1
C. 0
D. m
题目解答
答案
A. 不可能
解析
考查要点:本题主要考查栈的顺序存储结构中top
指针的取值范围及栈操作的合法性。
解题核心思路:
- 栈的顺序存储特性:栈空间为
S(1:m)
,即物理存储空间大小为m
,top
初始为0
(空栈状态)。 - 入栈与退栈操作的规则:
- 入栈:当栈未满(
top < m
)时,top
增加1
,元素存入S[top]
。 - 退栈:当栈不空(
top > 0
)时,top
减少1
,返回S[top]
的值。
- 入栈:当栈未满(
- 关键矛盾点:题目中
top = m + 1
超出了存储空间的最大索引m
,需判断此状态是否可能通过正常操作达到。
破题关键:
top
的合法范围:正常操作下,top
始终满足0 ≤ top ≤ m
。top = m + 1
的含义:此时表示尝试向已满的栈(top = m
)继续入栈,导致溢出,但题目强调操作“正常”,因此该状态不可能出现。
步骤1:理解栈的存储与top
的定义
- 栈空间为
S(1:m)
,物理上最多存储m
个元素。 top
初始为0
,表示空栈。- 入栈操作:
top
递增,最多到m
(栈满)。 - 退栈操作:
top
递减,最少到0
(栈空)。
步骤2:分析top = m + 1
的可能性
- 若
top = m
,栈已满,无法再入栈。 - 若此时强行入栈,会导致溢出(
top = m + 1
),但题目中操作均为“正常”,即不会触发溢出。 - 结论:
top = m + 1
无法通过正常操作达到。
步骤3:排除其他选项
- 选项B(
m + 1
):栈最多存储m
个元素,不可能有m + 1
个元素。 - 选项C(
0
):若top = m + 1
,说明刚完成入栈操作,栈不可能为空。 - 选项D(
m
):若top = m
,此时栈满,元素个数为m
,但题目中top = m + 1
与该状态矛盾。