C++队列

特点:先进先出

描述:队列及数据形成一个圆环,队头数据出去,队尾数据进来,当队列为空时,队尾和对头指向同一处,当队满时,队尾和对头还是指向同一处。

例:队列类模版

//dl1.h
#define QUEUE_CLASS

#include<iostream.h>
#include<stdlib.h>

const int MaxQSize=50;	//队列最大为50

template<class T>
class Queue
{
	int front,rear,count;
	T qlist[MaxQSize];
public:
	Queue(void);		//构造函数
	void QInsert(const T& item);//入队
	T QDelete(void);	//出队
	void ClearQueue(void);//清空队列
	T QFront(void)const;//队列头
	int QLength(void)const;//返回队列长度
	int QEmpty(void)const;//返回队列是否为空
	int QFull(void)const;//返回队列是否为满
};

//构造函数,初始化对头指针,队尾指针、元素个数
template<class T>
Queue<T>::Queue(void):front(0),rear(0),count(0)
{}

//向队尾插入元素(入队)
template<class T>
void Queue<T>::QInsert(const T& item)
{
	if(count==MaxQSize)
	{//如果队满,终止程序
		cerr<<"Queue overflow!"<<endl;
		exit(1);
	}
	count++;//元素个数+1
	qlist[rear]=item;//向队尾插入元素
	rear=(rear+1)%MaxQSize//队尾指针+1,用取余运算实现循环队列
}

//删除队首元素,并返回该元素的值(出队)
template<class T>
T Queue<T>::QDelete(void)
{
	T temp;
	if(count=0)
	{//如果队空,终止程序
		cerr<<"This is an empty queue!"<<endl;
		exit(1);
	}
	temp=qlist[front];//记录队首元素值
	count--;	//元素个数-1
	front=(front+1)%MaxQSize;//队首指针+1,用取余运算实现循环队列
	return temp;//返回首元素值
}

//清空队列
template<class T>					//难道说直接覆盖了吗?
void Queue<T>::ClearQueue(void)
{
	count=0;
	front=0;
	rear=0;
}

//访问队列首元素
template<class T>
T Queue<T>::QFront(void)const
{
	return qlist[front];
}

//返回队列元素个数
template<class T>
int Queue<T>::QLength(void)const
{
	return count;
}

//是否空队
template<class T>
int Queue<T>::QEmpty(void)const
{
	return count==0;
}

//是否队满
template<class T>
int Queue<T>::QFull(void)const
{
	return count==MaxQSize;
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值