優先順位を設定する


修士論文のテーマは中間件についてですので、論文を書く過程でよくあるデータ構造に関連しています.今日は優先順位に基づく列を実現します.
 
       以下は私のミッションです.
       
package com.liu.queue;

public class Task {

	//      
	private int grade;
	//       
	private Task next;

	public int getGrade() {
		return grade;
	}

	public void setGrade(int grade) {
		this.grade = grade;
	}

	public Task getNext() {
		return next;
	}
	
	public void setNext(Task next) {
		this.next = next;
	}
	
	public Task(){}
	
	public Task(int grade)
	{
		this.grade=grade;
		this.next=null;
	}
}

 
  優先順位の列の具体的な実装コードは以下の通りです.
  (優先順位に基づくジョブキューはチェーンデータ構造で実現されています.プログラムは挿入削除操作が多く、またチェーンテーブルが占有するメモリ空間は拡張しやすいです.)
package com.liu.queue;

/*
 * 	        
 */
public class GradeQueue {

	//   
	private Task head;
	//   (                     ,         )
	private Task tail;
	//          
	private int min;

	public Task getHead() {
		return head;
	}

	public void setHead(Task head) {
		this.head = head;
	}

	public int getMin() {
		return min;
	}

	public void setMin(int min) {
		this.min = min;
	}

	public Task getTail() {
		return tail;
	}

	public void setTail(Task tail) {
		this.tail = tail;
	}
	
	/*
	 *     
	 */
	public GradeQueue()
	{
		if(head==null)
		{
			head=new Task();
			tail=head;
			head.setNext(null);
			min=0;
		}
	}
	
	/*
	 *     
	 */
	public void add(Task task)
	{
		//     ,    
		if(head==null)System.out.println("     ,      !");
		//         ,          
		else if(head.getNext()==null)
		{
			head.setNext(task);
			tail=task;
			min=task.getGrade();
		}
		//               min,        
		else if(task.getGrade()<=min)
		{
			tail.setNext(task);
			tail=task;
			min=task.getGrade();
		}	
		else
		{
			Task curr=head.getNext();
			Task prev=head;
			while(curr!=null&&curr.getGrade()>=task.getGrade())
			{
				prev=curr;
				curr=curr.getNext();
			}
			//    
			if(curr==null)
			{
				prev.setNext(task);
				tail=task;
				min=task.getGrade();
			}	
			else
			{
				task.setNext(curr);
				prev.setNext(task);
			}
		}
	}
	
	/*
	 *   
	 */
	public void print()
	{
		Task t=head.getNext();
		while(t!=null)
		{
			System.out.print(t.getGrade()+"--->");
			t=t.getNext();
		}
	}
	
	public static void main(String[] args) 
	{
		GradeQueue queue=new GradeQueue();
		Task t1=new Task(5);
		Task t2=new Task(8);
		Task t3=new Task(6);
		Task t4=new Task(3);
		queue.add(t1);
		queue.add(t2);
		queue.add(t3);
		queue.add(t4);
		queue.print();
	}
}

 
 
    ここで簡単な優先順位の列が実現されました.他のキューに関する操作が簡単なので、実現されませんでした.