题目
若一个栈以向量V[1..n]存储,初始栈顶指针top设为n+1,则元素x进栈的正确操作是( )。A. top++; V[top]=x;B. V[top]=x; top++;C. top--; V[top]=x;D. V[top]=x; top--;
若一个栈以向量V[1..n]存储,初始栈顶指针top设为n+1,则元素x进栈的正确操作是( )。
A. top++; V[top]=x;
B. V[top]=x; top++;
C. top--; V[top]=x;
D. V[top]=x; top--;
题目解答
答案
C. top--; V[top]=x;
解析
考查要点:本题主要考查栈的基本操作实现,特别是栈顶指针的移动方向与元素入栈的顺序关系。
解题核心思路:
栈通常采用向量(数组)实现,栈顶指针top
的初始位置决定了元素入栈时指针的移动方向。题目中栈顶指针初始为n+1
(数组有效索引为1..n
),说明栈是向下生长的。因此,元素入栈时需要先移动指针(top--
)腾出空间,再将元素存入新位置。
破题关键点:
- 初始
top
值为n+1
,此时栈为空,第一个元素应存入V[n]
。 - 数组索引范围为
1..n
,若直接对V[top]
赋值(如选项D),会导致越界错误。
栈的入栈操作需遵循以下步骤:
- 移动栈顶指针:由于栈向下生长,入栈前需将
top
减1,腾出存储空间。 - 存储元素:将元素
x
存入更新后的top
位置。
选项分析:
- 选项C(
top--; V[top]=x;
):
先移动指针top
到下一个可用位置,再存储元素x
,符合栈向下生长的逻辑。 - 选项D(
V[top]=x; top--;
):
若初始top=n+1
,直接赋值V[n+1]=x
会导致数组越界,错误。