Skip to content

栈与队列

先进后出 FILO 队列。用数组来模拟栈:

初始化:

  • stk[N] 表示栈,可以看作一个竖起来的数组,底部是 0
  • tt 表示栈顶元素下标
  • 栈只关心栈顶元素,不关心数组模拟栈的内部其他元素

操作:

  • 插入:stk[++ tt] = x;
  • 弹出:tt --;
  • 判空:tt > 0 不为零就是不空
  • 取顶:stk[tt]

AC828. 模拟栈

队列

先进先出 FIFO 队列。用数组来模拟队列:

初始化:

  • q[N] 表示队列,可以看作前后开口的数组
  • hh 队头下标,负责弹出元素
  • tt 队尾下标,负责插入元素
  • 习惯上 hh = 0, tt = -1

操作:

  • 插入:q[++ tt] = x;
  • 弹出:hh ++;
  • 判空:hh <= tt 队尾比队头下标小就非空
  • 取头:q[hh]
  • 取尾:q[tt]

AC829. 模拟队列

循环队列

  • hh = 0, tt = 1 习惯上
  • 判空 hh == tt 此时队列为空
  • 每次入队或出队都要 if (hh == N) hh = 0; 或者 if (tt = N) tt = 0;

Released under the MIT License.