无序队列:
package ch03Stack; public class Queue { // 数组 private long[] arr; // 最大空间 private int maxsize; // 有效长度 private int elems; // 对头 private int font; // 队尾 private int end; // 构造方法 public Queue(int maxsize){ this.maxsize = maxsize; arr = new long[maxsize]; elems = 0; font = 0; end = -1; } // 插入数据 public void insert(long value){ arr[++end] = value; elems++; } // 取出数据 public long remove(){ elems--; return arr[font++]; } // 判断队列是否为空 public boolean isEmpty(){ return (elems == 0); } // 判断是否满了 public boolean isFull(){ return (elems == maxsize - 1); } // 返回有效元素大小 public int size(){ return elems; } }
package ch03Stack; public class TestQuene { public static void main(String[] args) { Queue queue = new Queue(5); queue.insert(50); queue.insert(40); queue.insert(30); queue.insert(20); queue.insert(10); System.out.println(queue.isEmpty()); System.out.println(queue.isFull()); while(!queue.isEmpty()){ System.out.println(queue.remove()); } queue.remove(); } }
package ch03Stack; public class PriorityQueue { // 数组 private long[] arr; // 最大空间 private int maxsize; // 有效长度 private int elems; // 构造方法 public PriorityQueue(int maxsize){ this.maxsize = maxsize; arr = new long[maxsize]; elems = 0; } // 插入数据(大到小) public void insert(long value){ int i; for(i = 0; i < elems; i++){ if(arr[i] < value) break; } for(int j = elems; j > i; j--){ arr[j] = arr[j - 1]; } arr[i] = value; elems++; } // 取出数据 public long remove(){ return arr[--elems]; } // 判断队列是否为空 public boolean isEmpty(){ return (elems == 0); } // 判断是否满了 public boolean isFull(){ return (elems == maxsize); } // 返回有效元素大小 public int size(){ return elems; } }
测试:
package ch03Stack; public class TestPriorityQueue { public static void main(String[] args) { PriorityQueue pq = new PriorityQueue(10); pq.insert(50); pq.insert(74); pq.insert(25); pq.insert(35); pq.insert(82); pq.insert(12); while(!pq.isEmpty()) System.out.print(pq.remove() + " "); } }