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; } }
本人倡导的讲解方式:代码示例[学以致用,不仅要知道理论,还要知道理论怎么付诸实践],
文字讲解[不仅知道要怎么用,还要知道是怎么回事],
画图讲解[有图有真相,用图的形式将代码嵌入到理论中,整体理解]