Skip to content

第二章 栈与队列

「栈」构造

c++
typedef struct
{
    ElemType data[MaxSize];
    int top;
} Stack;
c++
typedef struct
{
    ElemType data[MaxSize];
    int top;
} Stack;

「栈」计算

  • 当有n个不同的元素入栈,出栈序列的个数为卡特兰数1𝑛+1C2𝑛n
  • 给定二叉树的前序序列作为入栈队列,则所有的出栈为所有可能的中序遍历

第二节 队列

「队列」构造

c++
typedef struct
{
    ElemType data[MaxSize];
    int front, rear; //队头和队尾指针
} SqQueue;

「队列」中缀转后缀

  • 操作数:直接加入表达式
  • 界限符
    • “(”:直接入栈
    • “)”:依次弹出运算符,直到“(”为止
  • 运算符
    • 依次弹出栈中优先级大于等于当前运算符的所有运算符
    • 碰到“(”或栈空停止