六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 158|回复: 0

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

[复制链接]

升级  98.33%

147

主题

147

主题

147

主题

举人

Rank: 3Rank: 3

积分
495
 楼主| 发表于 2013-2-5 02:17:28 | 显示全部楼层 |阅读模式
作为最小堆应用,实现了另一个实用的类----优先队列.优先队列有着广泛的应用,在操作系统中,许多消息队列、等待队列等,使用了优先队列,在算法中,我们常用优先队列来实现广度搜索、贪心算法等。
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;}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表