特性 设计思想一 (最常考) 设计思想二
指针含义 指向栈顶元素 指向下一个空闲位置
栈1初始化 top1 -1 0
栈2初始化 top2 MAXSIZE MAXSIZE-1
栈1入栈 Push(S, x) S[++top1] = x; S[top1++] = x;
栈2入栈 Push(S, x) S[--top2] = x; S[top2--] = x;
栈1判空 top1 == -1 top1 == 0
栈2判空 top2 == MAXSIZE top2 == MAXSIZE-1
栈满条件 top1 + 1 == top2 top1 > top2

  1. 核心记忆: 牢牢记住思想一的所有细节,包括初始化、入栈/出栈操作和 top1 + 1 == top2 的判满条件。这是99%的考题所基于的模型。

  2. 审题是关键: 考试时,不要上来就写 top1 + 1 == top2。一定要先看清题目给出的数据结构定义初始化条件。如果题目给出了一个非主流的初始化(如思想二),那就必须按照该设定来分析。

  3. 现场推导能力: 防止被“变种题”迷惑的最佳方法,不是去背诵所有可能的情况,而是理解判满的本质——空间耗尽。在草稿纸上画一个数组,模拟一两次入栈操作,观察指针的变化,就能轻松推导出正确的判满条件。这比死记硬背更可靠。

  4. 易错点:

    • 混淆 top1 + 1 == top2top1 == top2 - 1。记住是栈1的下一个位置(top1+1)撞上了栈2的当前位置(top2)。

    • 数组大小为 MAXSIZE,下标却是 0MAXSIZE-1。在计算 top2 初始值时要小心。