#include <iostream>
using namespace std;
const int QueueSize = 100;
template <class DataType>
struct Node {
DataType data[QueueSize];
Node* next;
};
template <class DataType>
class LinkQueue
{
private:
Node* front, *rear;
public:
LinkQueue(); ///构造函数,初始化一个空的链队列
~LinkQueue(); /// 析构函数,释放链队列中各节点的存储空间
void EnQueue(DataType x); ///入队操作,将元素x入队
DataType DeQueue(); ///出队操作,将队头元素出队
DataType GetQueue() { return front->data; } ///取链队列的队头元素
int Empty() {
if (front == rear)
return 1;
else
return 0;
} ///判断链队列是否为空
};
template <class DataType>
LinkQueue<DataType>::LinkQueue()
{
Node* s;
s = new Node; s->next = NULL; /// 创建一个头结点s
front = rear = s; ///将队头指针和队尾指针都指向头结点s
}
template <class DataType>
LinkQueue<DataType>::~LinkQueue()
{
Node* p, *q;
p = front;
while (p) {
q = p;
p = p->next;
delete q;
}
}
template <class DataType>
void LinkQueue<DataType>::EnQueue(DataType x)
{
Node* s;
s = new Node; s->data = x; ///申请一个数据域为x的结点s
s->next = NULL;
rear->next = NULL; ///将结点s插入队尾
rear = s;
}
template <class DataType>
DataType LinkQueue<DataType>::DeQueue()
{
if (front == rear)
throw "下溢";
Node* p;
p = front->next; x = p->data; ///暂存队头元素
front->next = p->next; ///将队头元素所在结点摘链
if (p->next == NULL) rear = front; ///判断出队前队列长度是否为1
delete p;
return x;
}
int main()
{
return 0;
}
队列的链接存储结构---链队列
最新推荐文章于 2022-09-18 13:45:57 发布