4.队列及消息队列
普通队列,先进先出,哥们
public class MyQueue {
int maxSize;
int[] queArray;
int front;
int rear;
int nItems;
public MyQueue(int len){
maxSize = len;
queArray = new int[maxSize];
nItems = 0;
front = 0;
rear = -1;
}
public void insert(int val){
if(rear == maxSize - 1){
rear = -1;
}
this.queArray[++rear] = val;
nItems++;
}
public int remove(){
int res = this.queArray[front++];
if(front == maxSize){
front = 0;
}
nItems--;
return res;
}
public int peekQueue(){
return this.queArray[front];
}
public boolean isEmpty(){
return this.nItems==0;
}
public boolean isFull(){
return this.nItems==this.maxSize;
}
public int size(){
return this.nItems;
}
}
优先级队列,排队的时候警察叔叔或者是消防官兵可插队
public class PriorityQ {
private int maxSize;
private int[] queArr;
private int nItems;
public PriorityQ(int len){
this.maxSize=len;
this.queArr=new int[this.maxSize];
this.nItems=0;
}
public void insert(int val){
if(this.nItems==0){
this.queArr[this.nItems++]=val;
}else{
int i ;
for(i=this.nItems-1;i>=0;i--){
if(val>this.queArr[i]){
this.queArr[i+1]=this.queArr[i];
}else{
break;
}
}
this.queArr[i+1]=val;
this.nItems++;
}
}
public int remove(){
return this.queArr[--this.nItems];
}
public int peekMin(){
return this.queArr[this.nItems-1];
}
public boolean isEmpty(){
return this.nItems==0;
}
public boolean isFull(){
return this.nItems==this.maxSize;
}
}
本人倡导的讲解方式:代码示例[学以致用,不仅要知道理论,还要知道理论怎么付诸实践],
文字讲解[不仅知道要怎么用,还要知道是怎么回事],
画图讲解[有图有真相,用图的形式将代码嵌入到理论中,整体理解]

浙公网安备 33010602011771号