队列的实现

来源:互联网 发布:mac新建文件夹 编辑:程序博客网 时间:2024/06/14 17:04
/****************************************************************************
*    队列的成员数据:队列的长度,队列头,队列尾,队列中元素个数;
*    队列的成员方法:初始化,是否为空,入队,出队,获取对列中元素。
*****************************************************************************/
#include<iostream>//#define MAXSIZE 100using namespace std;//循环队列--数组形式template<class T>class Queue_{private:int Max_Size;int real;int font;T* data;public:Queue_(){Max_Size=100;data=new T[Max_Size];real=font=-1;}~Queue_(){if(data!=NULL){delete []data;cout<<"释放队列!"<<endl;}}bool Empty(){if(real==font){//cout<<"队列为空!"<<endl;return true;}else{//return false;}}bool Full(){if((real-font==Max_Size-1)||(font==real+1)){//return true;}else{//return false;}}int GetSize(){if(!Empty()){return (real-font+Max_Size)%Max_Size;}else{return 0;}}T GetFont(){try{if(Empty())throw 0;return data[font];}catch(int e){if(e==0)cout<<"队列为空!"<<endl;exit(-1);}}bool En_Queue(T m_data){if(Full()){return false;}else{if(real==-1){real=0;font=0;}data[real]=m_data;real=(real+1)%Max_Size;return true;}}bool Out_Queue(){if(Empty()){return false;}else{font=(font+1)%Max_Size;return true;}}};int main(){int a[]={5,3,2,7,9};Queue_<int> m_queue;if(m_queue.Empty())cout<<"队列为空!"<<endl;else cout<<"队列非空!"<<endl;if(m_queue.Full())cout<<"队列已满!"<<endl;else cout<<"队列未满!"<<endl;cout<<endl;m_queue.En_Queue(a[0]);    m_queue.En_Queue(a[1]);m_queue.En_Queue(a[2]);m_queue.En_Queue(a[4]);if(m_queue.Empty())cout<<"队列为空!"<<endl;else cout<<"队列非空!"<<endl;if(m_queue.Full())cout<<"队列已满!"<<endl;else cout<<"队列未满!"<<endl;cout<<endl;    cout<<"获取队列中元素个数: "<<m_queue.GetSize()<<endl;cout<<endl;cout<<"获取队列中对头元素: "<<m_queue.GetFont()<<endl;cout<<endl;if(m_queue.Out_Queue())cout<<"出队!"<<endl;cout<<endl;if(m_queue.Out_Queue())cout<<"出队!"<<endl;cout<<endl;if(m_queue.Out_Queue())cout<<"出队!"<<endl;cout<<endl;if(m_queue.Out_Queue())cout<<"出队!"<<endl;cout<<endl;    cout<<"获取队列中元素个数: "<<m_queue.GetSize()<<endl;cout<<endl;//cout<<"获取队列中对头元素: "<<m_queue.GetFont()<<endl;//cout<<endl;m_queue.En_Queue(9);    cout<<"获取队列中元素个数: "<<m_queue.GetSize()<<endl;cout<<endl;cout<<"获取队列中对头元素: "<<m_queue.GetFont()<<endl;cout<<endl;return 0;}

0 0
原创粉丝点击