队列及优先级队列
队列,与栈相反,先进先出:
/** * 优先级队列与队列唯一的区别是优先级队列内部数据项有序 * * @Desc This class use to create PriorityQ class * @author xujp1 * @version Revision: 1.00 Date: Feb 20, 2012 */class PriorityQ{ private final long[] priorityQ; private final int maxSize; private int nItem; public PriorityQ(int s) { maxSize = s; priorityQ = new long[maxSize]; nItem = 0; } //remove和insert方法实现在插入后队列即有序 public long remove() { return priorityQ[--nItem]; } public void insert(long s) { int j; if(nItem == 0) { priorityQ[nItem] = s; } else { for(j = nItem - 1; j >= 0; j--) { if(priorityQ[j] < s) { priorityQ[j + 1] = priorityQ[j]; } else break; } priorityQ[j + 1] = s; } nItem++; } //下面的remove2和insert2主要以remove2实现优先级队列 public long remove2() { int min = 0; long minData; for(int i = 1; i < nItem; i++) { min = priorityQ[min] < priorityQ[i] ? min : i; } minData = priorityQ[min]; for(int j = min; j < nItem - 1; j++) { priorityQ[j] = priorityQ[j + 1]; } nItem--; return minData; } public void insert2(long s) { priorityQ[nItem++] = s; } public boolean isEmpty() { return (nItem == 0); }}