배열 구현 우선 대기 열

1796 단어
MyLoopQueue
package DataStructure;

import java.util.NoSuchElementException;

/**
 *               。
 *
 *      《    Java    》 page249。
 *
 *                    ,   ,                ,
 *      ,    。
 *
 *            ,                     
 *               ,   for             new  。
 * add        int     ,      int         ,              
 * remove  。
 * @param 
 */
public class PriorityQueue {

    private int highestPriority;//    0 highestPriority
    private MyLoopQueue[] queueArray;//MyLoopQueue       ,           。
    private int currentMaxPriority;//        。

    public PriorityQueue(int highestPriority,int capacityOfEachPriority){
        queueArray=new MyLoopQueue[highestPriority+1];
        this.highestPriority=highestPriority;
        currentMaxPriority=0;
        for (int i=0;i<=highestPriority;i++){
            queueArray[i]=new MyLoopQueue(capacityOfEachPriority);
        }
    }

    public void add(T element, int priority) {
        if (priority>highestPriority||priority<0){
            try {
                throw new Exception("         ,      :"+highestPriority+"      :0");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        if (priority>currentMaxPriority){
            currentMaxPriority=priority;
        }
        MyLoopQueue q=queueArray[priority];
        q.add(element);
    }

    public T remove() {
        MyLoopQueue q=queueArray[currentMaxPriority];
        while (q.isEmpty() && currentMaxPriority>0){
            q=queueArray[--currentMaxPriority];
        }
        T answer= (T) q.remove();

        return answer;
    }

    public T peek() {
        return (T) queueArray[currentMaxPriority].peek();
    }

}  

좋은 웹페이지 즐겨찾기