基本資料結構:佇列(queue)
阿新 • • 發佈:2018-12-27
template<class T>
class queueNode
{
public:
queueNode():next(NULL){}
T data;//值 queueNode* next;//指向下一個節點的指標};
template<class T>
class myqueue
{
private:
unsigned int queuelength;
queueNode<T>* node;//臨時節點 queueNode<T>* rear;//隊尾 queueNode<T>* front;//隊首 public:
myqueue();// 初始化 unsigned int length();//佇列元素的個數 void push(T x);//入隊 bool isEmpty();//判斷佇列是否為空 void pop();//出隊 T getHead();//獲得隊首元素
};
template<class T>
myqueue<T>::myqueue()
{
node=NULL;
rear=NULL;
front=NULL;
queuelength=0;
}
template<class T>
inline unsigned int myqueue<T>::length(){return queuelength;}
template<class T>
void myqueue<T>::push(T x)
{
node=new queueNode<T>();//申請一個新的節點 node->data=x;//新節點賦值為x if(rear==NULL)//如果沒有尾節點則佇列為空,node既為隊首,又是隊尾 {
front=node;
rear=node;
}
else//如果佇列非空 {
rear->next=node;// node既為尾節點的下一個節點 rear=node;//node變成了尾節點,把尾節點賦值為node }
++queuelength;//元素個數+1}
template<class T>
bool myqueue<T>::isEmpty()
{
return queuelength==0;
}
template<class T>
void myqueue<T>::pop()
{
if(queuelength==0) return;
node=front;
front=front->next;
delete(node);
--queuelength;
}
template<class T>
T myqueue<T>::getHead()
{
return front->data;
}
class queueNode
{
public:
queueNode():next(NULL){}
T data;//值 queueNode* next;//指向下一個節點的指標};
template<class T>
class myqueue
{
private:
unsigned int queuelength;
queueNode<T>* node;//臨時節點 queueNode<T>* rear;//隊尾 queueNode<T>* front;//隊首 public:
myqueue();//
};
template<class T>
myqueue<T>::myqueue()
{
node=NULL;
rear=NULL;
front=NULL;
queuelength=0;
}
template<class T>
inline unsigned int
template<class T>
void myqueue<T>::push(T x)
{
node=new queueNode<T>();//申請一個新的節點 node->data=x;//新節點賦值為x if(rear==NULL)//如果沒有尾節點則佇列為空,node既為隊首,又是隊尾 {
front=node;
rear=node;
}
else//如果佇列非空 {
rear->next=node;//
++queuelength;//元素個數+1}
template<class T>
bool myqueue<T>::isEmpty()
{
return queuelength==0;
}
template<class T>
void myqueue<T>::pop()
{
if(queuelength==0) return;
node=front;
front=front->next;
delete(node);
--queuelength;
}
template<class T>
T myqueue<T>::getHead()
{
return front->data;
}