📄 queueadt.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 + -