C++队列

来源:互联网 发布:淘宝联盟21号不能提现 编辑:程序博客网 时间:2024/05/22 09:02

特点:先进先出

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

例:队列类模版

//dl1.h#define QUEUE_CLASS#include<iostream.h>#include<stdlib.h>const int MaxQSize=50;//队列最大为50template<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++;//元素个数+1qlist[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--;//元素个数-1front=(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 0
原创粉丝点击