优先队列:使用了二叉堆来实现。
二叉堆:实际上是一颗被完全填满的二叉树。它具有堆序性。而最小值在根的位置。并且使用的是数组实现,一个I元素左儿子在2I上,右儿子在2I+1上。父亲则在I/2上。
为了保证堆序性,我们在插入和删除操作上要注意。在插入时我们就要调整整个堆保证每个子树的根节点最小。删除时也一样。
#include<new>
#include<iostream>
template <typename T>struct HeapNode{
int Capacity;
int Size;
T * Elements;
};
template <typename T> class PriorityQueue{
private:
typedef struct HeapNode<T> * Priorityqueue;
Priorit