题目
若一个栈以向量V[1..n]存储,初始栈顶指针top为n+1,则下面x进栈的正确操作是( )。A. top=top+1;V[top]=xB. V[top]=x;top=top+1C. top=top-1;V[top]=xD. V[top]=x;top=top-1
若一个栈以向量V[1..n]存储,初始栈顶指针top为n+1,则下面x进栈的正确操作是( )。
A. top=top+1;V[top]=x
B. V[top]=x;top=top+1
C. top=top-1;V[top]=x
D. V[top]=x;top=top-1
题目解答
答案
C. top=top-1;V[top]=x
解析
栈的基本操作是本题的考查要点。栈的特点是先进后出,其核心操作包括进栈和出栈。本题的关键在于理解栈顶指针的初始位置以及进栈时指针的移动方向。
- 初始状态:栈顶指针
top
初始化为n+1
,此时栈为空,所有元素尚未被使用。 - 进栈逻辑:元素需要依次存入数组的有效位置(
1
到n
)。由于栈顶指针top
初始指向数组末尾的下一个位置(n+1
),进栈时应先移动指针到前一个位置(top--
),再将元素存入当前栈顶位置。这样可以避免数组越界,并确保后续操作的正确性。
选项分析
选项C:top=top-1;V[top]=x
- 指针移动:
top
从n+1
减1,变为n
,指向数组最后一个有效位置。 - 存储元素:将
x
存入V[n]
,此时栈顶指针正确指向新元素。 - 后续操作:下一次进栈时,
top
继续减1,依次使用n-1
、n-2
等位置。
选项D:V[top]=x;top=top-1
- 直接存储:
top
初始为n+1
,此时V[n+1]
超出数组范围,导致数组越界错误。 - 指针移动:即使后续指针减1,首次操作已不可行。
其他选项
- 选项A/B:
top=top+1
会使指针进一步远离有效数组范围,显然错误。