logo头像
Snippet 博客主题

线性表

队列

循环队列,阻塞队列,并发队列

  1. 基于数组的队列

问题:队满时,左边还有空间怎么做

解决: 入队时,如果队满,将head和tail之间搬到0-head之间

  1. 循环队列

    难点:确定队满和队空的条件

  • 非循环的队列,数组实现
    • 队空:head=tail
    • 队满:tail=n
  • 循环队列:
    • 队空:head=tail
    • 队满:(tail + 1)%n = head
  1. 阻塞队列
    队列为空得时候,从对头取数据被阻塞;队列满的时候,从队尾插数据被阻塞.

  2. 并发队列
    多线程同时操作队列,保证队列的线程安全.
    在入队和出队的时候加锁.