C++ 类和类模版实现循环队列

类模版实现循环队列

#include <iostream>
using namespace std;
#define MAX 50
template<typename T> class Queue{
	public:
		T data[MAX];
		int front; //队头指针
		int count;//用来计算元素数量的计数器,用count和front代替尾指针rear
		
		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 ;
		}
		//rear == (front+count)%MAX
		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;//0不是空 
} 
//入队
/*
	用count和front代替rear的功能 
	q.rear = (q.front+q.count)%MAX
*/
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;
	
//	for(int i=1; i<=5; i++){
//		int num=0;
//		deQueue(q,num);
//		cout<<num<<" ";	
//	}


	return 0;
}
发布了167 篇原创文章 · 获赞 52 · 访问量 6930

猜你喜欢

转载自blog.csdn.net/qq_42363032/article/details/103825612