题目
若一个栈以向量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会导致数组越界,错误。