题目
【单选题】若一个栈用数组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--):错误。入栈时栈顶指针应递增而非递减。