queue.h

来自「B-树实现索引和快速查找」· C头文件 代码 · 共 55 行

H
55
字号
#ifndef Queue_h
#define Queue_h
#include<iostream.h>
#include<assert.h>
template<class Type> class Queue;
template<class Type> class QueueNode{
	friend class Queue<Type>;
	private:
		Type data;
		QueueNode<Type> *link;
	public:
		QueueNode(Type d=0,QueueNode *l=NULL):data(d),link(l){}
};
template<class Type> class Queue{
	public:
		Queue():rear(NULL),front(NULL){}
		~Queue();
		void EnQueue(const Type& item);
		Type DeQueue();
		Type GetFront();
		void MakeEmpty();
		int IsEmpty()const{return front==NULL;}
	private:
		QueueNode<Type> *front,*rear;
};
template<class Type> Queue<Type>::~Queue(){
	QueueNode<Type> *p;
	while(front!=NULL){
		p=front;front=front->link;delete p;
	}
}
template<class Type> void Queue<Type>::EnQueue(const Type &item){
	if(front==NULL)front=rear=new QueueNode<Type>(item,NULL);
	else rear=rear->link=new QueueNode<Type>(item,NULL);
}
template<class Type> Type Queue<Type>::DeQueue(){
	assert(!IsEmpty());
	QueueNode<Type> *p=front;
	Type retvalue=p->data;
	front=front->link;delete p;
	return retvalue;
}
template<class Type> Type Queue<Type>::GetFront(){
	assert(!IsEmpty());
	return front->data;
}
template<class Type> void Queue<Type>::MakeEmpty(){
	QueueNode<Type> *p;
	while(front!=NULL){
		p=front;front=front->link;delete p;
	}
}
#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?