类模版实现循环队列
#include <iostream>
using namespace std;
#define MAX 50
template<typename T> class Queue{
public:
T data[MAX];
int front;
int count;
void init();
void enQueue(T ele);
void deQueue(T &num);
};
template<typename T> void Queue<T>::init(){
this->front = this->count = 0;
}
template<typename T> void Queue<T>::enQueue(T ele){
if( this->count == MAX ){
return ;
}
this->data[(this->front+this->count)%MAX] = ele;
this->count++;
cout<<ele<<"入队\n";
}
template<typename T> void Queue<T>::deQueue(T &num){
if( this->count == 0 ){
cout<<"队空"<<endl;
return ;
}
num = this->data[this->front];
this->front = (this->front+1)%MAX;
this->count--;
}
int main(){
Queue<int> q;
q.init();
for(int i=1; i<=10; i++){
q.enQueue(i);
}
cout<<"出队"<<endl;
for(int i=1; i<=10; i++){
int num;
q.deQueue(num);
cout<<num<<" ";
}
return 0;
}
类
#include <iostream>
using namespace std;
#define MAX 5
class Queue{
public:
int data[MAX];
int front;
int count;
public:
void init();
int isEmpty();
void enQueue(int ele);
void deQueue(int &num);
};
void Queue::init(){
this->front = this->count = 0;
}
int Queue::isEmpty(){
return this->count==0;
}
void Queue::enQueue(int ele){
if( this->count == MAX ){
cout<<"队满---\n";
return ;
}
this->data[(this->front+this->count)%MAX] = ele;
this->count++;
cout<<ele<<" ";
}
void Queue::deQueue(int &num){
if(this->isEmpty()){
cout<<"队列为空---";
return ;
}
num = this->data[this->front];
this->front = (this->front+1)%MAX;
this->count--;
}
int main(){
Queue q;
q.init();
for(int i=0; i<=5; i++){
q.enQueue(6);
}
int num;
q.deQueue(num);
cout<<"出队:"<<num<<endl;
q.enQueue(6);
cout<<"count:"<<q.count<<endl;
return 0;
}