C++ 数据结构 (四) 栈与队列 (3) 队列接口与实现

Posted by Oscaner on December 5, 2018

操作与接口

1.png

队列 (queue) 也是受限的序列: 先进先出 (FIFO)、后进后出 (LILO)

只能在队尾插入 (查询): enqueue() + rear()

只能在队头删除 (查询): dequeue() + front()

操作实例

2.png

模板类

队列既然属于序列的特列,故亦可直接基于向量或列表派生

1
2
3
4
5
6
7
template <typename T>
class Queue : public List<T> { // 由列表派生的队列模板类
  public: // size() 与 empty() 直接沿用
    void enqueue(T const &e) { insertAsLast(e); } // 入队
    T dequeue() { return remove(first()); } // 出队
    T & front() { return first() -> data; } // 队首
};

确认: 如此实现的队列接口,均只需 $ O(1) $ 时间


本文由 Oscaner 创作, 采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外, 均为本站原创或翻译, 转载前请务必署名