循环队列作业报告2—:://sq_Queue#include<iostream>usingnamespacestd;//定义循环队列template<classT>template<classT>classsq_Queue{private:intm;intS;//队列的容量intfront,rear;//队头,队尾指针T*q;//循环队列存储空间首地址public:sq_Queue(int);//构造函数,建立空队列voidprt_sq_Queue();//输出队头,队尾指针并顺序输出队中元素intflag_sq_Queue();//检测顺序队的状态voidins_sq_Queue(T);//在队尾加入元素Tdel_sq_Queue();//在队头删除元素Tread_sq_Queue();//读队头元素};classsq_Queue{private:intm;intS;//队列的容量intfront,rear;//队头,队尾指针T*q;//循环队列存储空间首地址public:sq_Queue(int);//构造函数,建立空队列voidprt_sq_Queue();//输出队头,队尾指针并顺序输出队中元素intflag_sq_Queue();//检测顺序队的状态voidins_sq_Queue(T);//在队尾加入元素Tdel_sq_Queue();//在队头删除元素Tread_sq_Queue();//读队头元素};//建立容量为m的循环队列template<classT>sq_Queue<T>::sq_Queue(intmm){m=mm;q=newT[m];front=rear=m;S=0;//初始状态为空return;}template<classT>voidsq_Queue<T>::prt_sq_Queue(){inti;cout<<"front="<<front<<endl;cout<<"rear="<<rear<<endl;if(S==0){cout<<"队列为空!"<<endl;return;}i=front;do{i=i+1;if(i==m+1)i=1;cout<<q[i-1]<<endl;}while(i!=rear);return;}//检测循环队列的状态template<classT>intsq_Queue<T>::flag_sq_Queue(){if(front==rear&&S==1)return-1;//存储空间已满,返回-1if(S==0)return(0);//队列为空return(1);//正常返回1//队尾加入元素template<classT>voidsq_Queue<T>::ins_sq_Queue(Tx){if((S==1)&&(rear==front))//存储空间已满,上溢{cout<<"Queen_Overflow!"<<endl;return;}rear=rear+1;//队尾指针进一if(rear==m+1)rear=1;q[rear-1]=x;//入队S=1;//入队后的状态为非空return;}}//在队头删除元素template<classT>Tsq_Queue<T>::del_sq_Queue(
循环队列 来自淘豆网www.taodocs.com转载请标明出处.