构建队列
template<class datatype>
cirqueue<datatype>::cirqueue(){
front=-1;
rear=front;
Msize=queuesize;
num=0;
data=new datatype[Msize];
}
template<class datatype>
cirqueue<datatype>::cirqueue(int size){
front =-1;
rear=front;
num=0;
Msize=size;
data=new datatype[Msize];
}
入队出队
template<class datatype>
bool cirqueue<datatype>::push(datatype x){
if(num==Msize){
cout<<"溢出"<<endl;
return false;
}else {
rear=(rear+1)%Msize;
data[rear]=x;
num++;
return true;
}
}
template<class datatype>
bool cirqueue<datatype>::pop(int *item){
if(num==0){
cout<<"空队"<<endl;
return false;
}else{
front=(front+1)%Msize;
*item=data[front];
return true;
}
}
完整代码
#include<iostream>
#include<stdlib.h>
using namespace std;
const int queuesize=100;
template<class datatype>
class cirqueue{
private:
datatype *data;
int front;
int rear;
int Msize;
int num;
public:
cirqueue();
cirqueue(int size);
~cirqueue();
bool push(datatype x);
bool pop(int *item);
bool getfront(int *item);
bool isempty();
bool isfull();
};
template<class datatype>
cirqueue<datatype>::cirqueue(){
front=-1;
rear=front;
Msize=queuesize;
num=0;
data=new datatype[Msize];
}
template<class datatype>
cirqueue<datatype>::cirqueue(int size){
front =-1;
rear=front;
num=0;
Msize=size;
data=new datatype[Msize];
}
template<class datatype>
cirqueue<datatype>::~cirqueue(){
delete data;
}
template<class datatype>
bool cirqueue<datatype>::push(datatype x){
if(num==Msize){
cout<<"溢出"<<endl;
return false;
}else {
rear=(rear+1)%Msize;
data[rear]=x;
num++;
return true;
}
}
template<class datatype>
bool cirqueue<datatype>::pop(int *item){
if(num==0){
cout<<"空队"<<endl;
return false;
}else{
front=(front+1)%Msize;
*item=data[front];
return true;
}
}
template<class datatype>
bool cirqueue<datatype>::getfront(int *item){
int *i;
if(num==0){
cout<<"空队"<<endl;
return false;
}else{
i=(front+1)%Msize;
*item=data[i];
return true;
}
}
int main(){
cirqueue<int> s(5);
int x;
int i;
for(i=0;i<5;i++){
cin>>x;
s.push(x);
}
int a;
for(i=0;i<5;i++){
s.pop(&a);
cout<<a<<endl;
}return 0;
}