优先级链队列(降序)
List头文件请看我的链表类模板实现
#ifndef PQUEUE_H
#define PQUEUE_H
#include<iostream>
#include"List.h"
template<typename T>
class PQueue
{
List<T> pque;
public:
PQueue(){}
~PQueue(){}
void Push(const T& item) { pque.push_back(item); }//入队
T Pop();
void Clear() { pque.clear(); }
int Size() { return pque.Size(); }
int Empty() { return pque.empty(); }
};
template<typename T>
T PQueue<T>::Pop()
{
typename List<T>::iterator max = pque.Begin();
typename List<T>::iterator first = pque.Begin();
typename List<T>::iterator last = pque.End();
for (; first != last; first++)
if ((*first) >(*max))
max = first;
T item = *max;
pque.Erase(max);
return item;
}
#endif
升序只需要把Pop函数里面稍作修改即可