template <class T>
class priorityQueue
{
public:
priorityQueue();
virtual ~priorityQueue();
void insertQueue(T e);
T pop();
int getNumOfQueue(){ return num; }
protected:
struct node
{
T data;
node *next;
};
node* front;
node* rear;
int num;
};
template <class T>
priorityQueue<T>::priorityQueue()
{
num = 0;
front = rear = new node;
rear->next = NULL;
}
template <class T>
priorityQueue<T>::~priorityQueue()
{
node* p = front->next;
while(p){
delete front;
front = p;
p = front->next;
}
delete front;
}
template <class T>
void priorityQueue<T>::insertQueue(T e)
{
num++;
node *p = new node, *temp = front->next, *pre = front;
p->data = e;
//此处自定义数据类型要重载操作符
while(temp && temp->data < e){
pre = temp;
temp = temp->next;
}
p->next = temp;
pre->next = p;
}
template <class T>
T priorityQueue<T>::pop()
{
num--;
T e = front->next->data;
node* p = front->next;
front->next = p->next;
delete p;
return e;
}
优先队列
最新推荐文章于 2018-03-30 19:05:07 发布