优先级队列与堆相似,此处用小根堆模拟优先级队列。
当前最小的值存在x[1]。
insert 操作
void insert(T t){int i,p;x[++n]=t;//把t插入到x[n]for(i=n;i>1&&x[p=i/2]>x[i];i=p)//如果父节点比子节点大swap(x[p],x[i]);//交换两元素}
查找并删除当前的最小值
T extractmin(){int i,c;T t=x[1];x[1]=x[n--]//替换x[1]为x[n]for(i=1;(c=2*i)<=n;i=c){if(c+1<=n&&x[c+1]