关闭

常用类之三----最小堆实现优先队列

1031人阅读 评论(0) 收藏 举报

Priority_Queue.h
#include"MinHeap.h"
template<class T>
class Priority_Queue{
 public:
  Priority_Queue();
  ~Priority_Queue();
  void Push(const T &x);
     T Pop();
  bool IsEmpty();
  bool IsFull();
 private:
  MinHeap<T> *m_heap;
  const int maxSize;
};

template<class T>
Priority_Queue<T>::Priority_Queue():maxSize(100){
     m_heap = new MinHeap<T>(maxSize);
}

template<class T>
Priority_Queue<T>::~Priority_Queue(){
  delete m_heap;
}

template<class T>
void Priority_Queue<T>::Push(const T &x){
  m_heap->Insert(x);
}

template<class T>
T  Priority_Queue<T>::Pop(){
  T temp;
  m_heap->RemoveMin(temp);
  return temp;
}

template<class T>
bool Priority_Queue<T>::IsEmpty(){
  return m_heap->IsEmpty();
}

template<class T>
bool Priority_Queue<T>::IsFull(){
  return m_heap->IsFull();
}

mainApp.cpp测试文件:

#include<iostream>
#include"Priority_Queue.h"
using namespace std;

void main(){
 int a[5] = {3,2,1,4,5};
 int i;
 Priority_Queue<int> p_queue;
 for(i = 0; i < 5; i++){
  p_queue.Push(a[i]);
 }
 while(!p_queue.IsEmpty()){
  cout<<p_queue.Pop()<<" ";
 }
 cout<<endl;
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:280982次
    • 积分:3898
    • 等级:
    • 排名:第8146名
    • 原创:108篇
    • 转载:25篇
    • 译文:0篇
    • 评论:69条
    最新评论
    文章收藏