⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queueadt.h

📁 本设计使用C++来实现一个简单的数据结构问题
💻 H
字号:
template<class TYPE>
struct NODE
{
 TYPE data;
 NODE<TYPE> *next;
 };

//Class Declaration
template<class TYPE>
class Queue
{
 private:
	 NODE<TYPE> *front;
	 int         count;
	 NODE<TYPE> *rear;
 public:
	 Queue       (void);
	 ~Queue      (void);
 bool dequeue    (TYPE& dataOut);
 bool enqueue    (TYPE dataIn);
 bool queueFront (TYPE& dataOut);
 bool queueRear  (TYPE& dataOut);
 int  queueCount (void);   
 bool emptyQueue (void);
 bool fullQueue  (void);
}; //class Queue

template<class TYPE>
Queue<TYPE>::Queue(void)
{
 //Statements	
	front=NULL;
	rear=NULL;
	count=0;
} //constructor

template<class TYPE>
bool Queue<TYPE>:: enqueue(TYPE dataIn)
{
 //Local Definitions	
	NODE<TYPE> *newptr;
 //Statements	
	if (!(newptr=new NODE<TYPE>))
		return false;
	newptr->data=dataIn;
	newptr->next=NULL;
	if (count==0)
    //Inserting into empty	queue
		front=newptr;
	else
		rear->next=newptr;
	count++;
	rear=newptr;
	return true;
} //enqueue

template<class TYPE>
bool Queue<TYPE>:: dequeue (TYPE& dataOut)
{
 //Local Definitions
	NODE<TYPE> *deleteLoc;
 //Statements
	if (count==0)
		return false;
	
	dataOut =front->data;
	deleteLoc=front;
	if (count==1)
 // Deleting the only item in queue		
		rear=front=NULL;
	else
		front =front->next;
	count--;
	delete deleteLoc;
	return true;
} //dequeue

template<class TYPE>
bool Queue<TYPE>:: queueFront (TYPE& dataOut)
{
 //Statements
	if (count==0)
		return false;
	else
	{
		dataOut=front->data;
		return true;
	} //else
} //queueFront

template<class TYPE>
bool Queue<TYPE>:: queueRear(TYPE& dataOut)
{
  //statements	
	if (count==0)
		return false;
	else
	{
		dataOut=rear->data;
		return true;
	} //else
} //queueRear

template<class TYPE>
bool Queue<TYPE>:: emptyQueue(void)
{
 //Statements 	
	return (count==0);
} //emptyQueue

template<class TYPE>
bool Queue<TYPE>::fullQueue(void)
{
 //Local Definitons
	NODE<TYPE *temp;
 //Statements
	temp=new NODE<TYPE>;
	if (temp!=NULL)
	{delete temp;
	return false;
	} //if
	//Heap full
	return true;
} //fullqueue

template<class TYPE>
int Queue<TYPE>::queueCount(void)
{
 //Statements
	return count;
} //queueCount

template<class TYPE>
Queue<TYPE>::~Queue(void)
{
 //local Definition
	NODE<TYPE> *deleteptr;
 //Statements
	while(front!=NULL)
	{
		deleteptr=front;
		front=front->next;
	}//while
}

⌨️ 快捷键说明

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