与栈一样,队列也是存放数据对象的一种容器,其中的数据对象也按线性的逻辑次序排列。队列结构同样支持对象的插入和删除,但两种操作的范围分别被限制于队列的两端,并约定新对象只能从某一端插入其中,从另一端删除已有的元素。允许取出元素的一端称作队头,而允许插入元素的另一端称作队尾。
与栈不同的是,队列的元素操作具有先进先出的特点。这是由于入队和出队操作被固定在队头和队尾两端。
队列的操作接口主要有:规模size()、判空empty()、入队enqueue()、出队dequeue()、队头front()。
其具体实现如下:
#include <List.h>
template <typename T>
class queue :public List<T>
{
public:
void enqueue(T const & e)
{ inserAsLast(e); }
T & dequeue()
{ return remove(first()); }
T & front()
{ return first().data; }
}