题目
【单选题】若一个栈用数组data[1..n]存储,初始栈顶指针top为1,则以下元素x进栈的正确操作是()。A. top++; data[top]=x;B. data[top]=x; top++;C. top--; data[top]=x;D. data[top]=x; top--
【单选题】若一个栈用数组data[1..n]存储,初始栈顶指针top为1,则以下元素x进栈的正确操作是()。
A. top++; data[top]=x;
B. data[top]=x; top++;
C. top--; data[top]=x;
D. data[top]=x; top--
题目解答
答案
B. data[top]=x; top++;
解析
考查要点:本题主要考查栈的基本操作,特别是元素入栈时栈顶指针的变化逻辑。
解题核心思路:栈是先进后出的结构,入栈时元素应存入当前栈顶位置,随后栈顶指针递增以指向新栈顶。
关键点:
- 数组索引从1开始,初始栈顶指针
top
为1,表示栈顶位于data[1]
。 - 入栈操作顺序:先将元素存入当前
top
位置,再通过top++
更新栈顶指针。
栈的入栈操作需遵循以下步骤:
- 存入当前栈顶位置:将元素
x
存入数组的data[top]
处。 - 更新栈顶指针:将
top
递增1,使top
指向新的栈顶位置(即下一个可用位置)。
选项分析:
- 选项A(
top++; data[top]=x;
):错误。先递增top
会导致首次入栈时top
变为2,元素存入data[2]
,而data[1]
未被使用,逻辑错误。 - 选项B(
data[top]=x; top++;
):正确。先存入当前栈顶位置data[1]
,再递增top
至2,符合栈操作逻辑。 - 选项C、D(含
top--
):错误。入栈时栈顶指针应递增而非递减。