一、概念
普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (first in, largest out)的行为特征。通常采用堆数据结构来实现。
二、代码实现
import 队列.Queue;
public class PriorityQueue<E extends Comparable<E>> implements Queue<E> {
MaxHeap<E> mhp;
public PriorityQueue() {
// TODO Auto-generated constructor stub
mhp=new MaxHeap<>();
}
@Override
public int getSize() {
// TODO Auto-generated method stub
return mhp.getsize();
}
@Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return mhp.isEmpty();
}
@Override
public void enqueue(E e) {
// TODO Auto-generated method stub
mhp.add(e);
}
@Override
public E dequeue() {
// TODO Auto-generated method stub
return mhp.removemax();
}
@Override
public E getFront() {
// TODO Auto-generated method stub
return mhp.findMax();
}
@Override
public E getRear() {//优先队列,一般堆尾部不做处理。
// TODO Auto-generated method stub
return null;
}
@Override
public void clear() {
// TODO Auto-generated method stub
mhp.clear();
}
}