首页 > 代码库 > 链队列的C++实现

链队列的C++实现

#include<iostream>
using namespace std;
//节点类
template<class T>
struct QNode
{
	T data;
	QNode *next;
};
//队列类
template<class T>
struct LinkList
{
	QNode<T> * front;
	QNode<T> * rear;
	size_t size;
};

//构造一个空队列
template<class T>
void InitQueue(LinkList<T> & que)
{
	que.front = (QNode<T> *)malloc(sizeof(QNode<T>));
	if(!que.front) exit(0);
	que.size = 0;
	que.rear = que.front;
	que.rear->next = 0;
}
//销毁队列
template<class T>
void DestroyQueue(LinkList<T>& que)
{
	QNode<T> * p = que.front->next;
	free(que.front);
	while(p != 0)
	{
		que.front = p->next;
		free(p);
		p = que.front;
	}
}
//清空队列
template<class T>
void ClearQueue(LinkList<T>& que)
{
	QNode<T> * p = que.front->next;
	while(p != 0)
	{
		que.rear = p->next;
		free(p);
		p = que.rear;
	}
	que.rear = que.front;
	que.front->next = 0;
	que.size = 0;
}
//返回队列的长度
template<class T>
int QueueLength(LinkList<T>& que)
{
	return que.size;
}
//返回队列的队首元素
template<class T>
T GetHead(LinkList<T>& que)
{
	return que.front->next->data;
}
//元素入队
template<class T>
void EnQueue(LinkList<T>& que,T t)
{
	QNode<T> *p = (QNode<T>*)malloc(sizeof(QNode<T>));
	if(!p) exit(0);
	p->data = http://www.mamicode.com/t;>