队列
同栈一样,队列(queue)也是一种受限的线性表。队列元素只能从队尾插入(称为入队操作,enqueue),以及从队首删除(称为出队操作,dequeue)。队列操作像在电影院前排队买票一样。如果没有人为的破坏,那么新来者应该站到队列的后端,在队列最前面的人是下一个被服务的对象。因此,队列是按照到达的顺序来释放元素的,即“先进先出”(First In First Out)。
下面定义了队列的虚拟类。
template <class Elem> class Queue
{
// 清空队列的元素
virtual void clear() = 0;
// 入队
virtual bool enqueue(const Elem&) = 0;
// 出队,并返回队首元素
virtual bool dequeue(Elem&) = 0;
// 返回队首元素
virtual bool frontValue(Elem&) const = 0;
// 返回队列长度
virtual int length() const = 0;
};