在上一篇中,简单的介绍了队列这种数据结构,但在实际生活中,它并不常用,更为广泛应用的为优先级队列(cpu调度),如堆(是基于树的优先级队列)。。。
基于数组的优先级队列的简单实现:
package queue;
/**
* 基于数组的优先级队列
* 队列的头永远是数组下表为0为的位置
* */
public class PriorityQueueArray {
private int nitems;
private int maxSize;
Node node[];
public PriorityQueueArray(int max){
nitems=0;
maxSize=max;
node=new Node[max];
}
/**
* 判断队列是否为空
* */
public boolean isEmpty(){
if(nitems==0){
return true;
}
return false;
}
/**
* 判断队列是否已满
* */
public boolean isFull(){
if(nitems==maxSize){
return true;
}
return false;
}
/**
* 插入一个元素到队头
* 把下标为0的固定为队尾
* 对头随元素个数nitems浮动
* */
public void insertQueue(Node n){
if(isFull()){
System.out.println("队列已满!");
return;
}
if(isEmpty()){
node[nitems++]=n;
}else{
int i;
for(i=nitems-1;i>=0;i--){
if(n.getData()>node[i].getData()){
node[i+1]=node[i];
}else{
break;
}
}
node[i+1]=n;
nitems++;
}
}
/**
* 移除一个元素*/
public Node remove(){
return node[--nitems];
}
}
package queue;
public class Node {
private int data;
public Node(){}
public Node(int data){
this.data=data;
}
public void setData(int data){
this.data=data;
}
public int getData(){
return this.data;
}
}