题目
设栈的顺序存储空间为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与该状态矛盾。