目录
1.链式队列
链式队列是基于单链表的存储表示。所以在实现链式队列时使用了和链表一样的结点struct,结点的具体定义放在"Queue.h"的头文件中。链式队列有两个指针front,rear,front为队头指针,指向单链表的第一个结点,rear为队尾指针,指向单链表的最后一个结点,所以出队是删除第一个节点,入队是将新元素的结点插在单链表最后一个结点的后面。结构图如下:
本文链式队列对应的单链表没有设计空的头节点,因为头节点也没太大用处。
注意,当队列只有一个元素时,front == rear,因为该元素既是第一个元素也是最后一个元素。
2.队列基类的头文件"Queue.h"
这部分代码和上一篇循环队列的文章的Queue.h头文件相同,具体如下:
扫描二维码关注公众号,回复:
17450863 查看本文章
![](/qrcode.jpg)
#pragma once
const int maxSize = 50; //顺序队列的最大元素个数
template <class T>
class Queue
{
public:
Queue() {};
~Queue() {};
virtual bool EnQueue(const T& x) = 0; //新元素入队
virtual bool DeQueue(T& x) = 0; //队头元素出队
virtual bool get