数据结构之优先队列


优先队列就是在队列的基础上增加优先级的比较。在操作系统进行进程/线程调度算法中即用到了优先队列。


比如去医院看病,大家都要排队,但是如果病情非常严重的人肯定不需要排队了,可以直接救治,因为其优先级更高。


优先队列用堆来实现非常方便。因为将元素添加到堆中以后,堆的头节点总是值最大的那个(按Comparable的compareTo方法进行比较),如果

在实现类的comparaTo方法中按照优先级来比较,那么堆中的头节点就是优先级最高的那个。删掉这个最高优先级的节点后,堆会自动调整,将剩余

节点中优先级最高的调整到头节点。


//优先队列,由堆实现(堆的实现参加另外一篇文章)
public class PriorityQuene <T extends Comparable>{
	private Heap<T> heap;
	
	public PriorityQuene(){
		heap=new Heap<T>();
	}
	
	//添加到优先队列
	public void enqueue(T t){
		heap.add(t);
	}
	
	//删除并返回当前队列中优先级最高的元素
	public T dequeue(){
		return heap.remove();
	}
	
	public int Size(){
		return heap.Size();
	}
	
	

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值