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

原创 2006年05月28日 23:12:00

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;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

简单优先队列实现-基于最小堆

一、什么是优先队列优先队列不是按照普通对象先进先出原FIFO则进行数据操作,其中的元素有优先级属性,优先级高的元素先出队。本文提到的优先队列,是基于最小堆原理实现。 二、什么是最小堆最小堆是一个完全二...

最小堆 / 优先队列(C语言实现)

最近找实习,复习下数据结构方面的内容:用C语言实现最小堆/优先队列。并通过最小堆求解查找第k大元素的问题。

C++实现优先队列——最小堆,d路堆及配对堆

C++实现三种优先队列

Timer 源码解读 (2) TaskQueue 最小堆实现的优先队列

Timer中的定义:

数据结构实现之最小优先队列(最小堆)

package xwq.dt;import java.util.Comparator; import java.util.Iterator; import java.util.NoSuchElemen...

c语言最小堆的实现-优先队列

libevent 中有定时事件的管理,用户可以把超时的定时事件插入到 管理器中,当时间到了之后触发用户的回调函数处理; 查看了源码发现,定时器的数据结构其实是由最小堆来实现的。 优先队列为完全二叉树,...

堆排序和优先队列【最小堆】

最小堆性质: A[PARENT(i)] #include using namespace std;#define N 13int HEAP_SIZE=N;void MIN_HEAP_...

hdu 4006 The kth great number (优先队列+STB+最小堆)

The kth great number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Oth...

java最小堆实现优先权队列和求最大的n个数问题

堆在实现优先权队列和求最大最小的n个数问题上,有这莫大的优势! 对于最大堆和最小堆的定义此处不再赘述,课参考网上文章:http://blog.csdn.net/genios/article/detai...

最小优先级队列 — 使用最小堆实现

最小优先级支持的操作: 1.INSERT(S,x):将元素x插入队列S 2.MINIMUM(S):返回S中最小的元素 3.EXTRACT_MIN(S):去掉并返回S中最小的元素 4.DECRE...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)