優先順位を設定する
修士論文のテーマは中間件についてですので、論文を書く過程でよくあるデータ構造に関連しています.今日は優先順位に基づく列を実現します.
以下は私のミッションです.
優先順位の列の具体的な実装コードは以下の通りです.
(優先順位に基づくジョブキューはチェーンデータ構造で実現されています.プログラムは挿入削除操作が多く、またチェーンテーブルが占有するメモリ空間は拡張しやすいです.)
ここで簡単な優先順位の列が実現されました.他のキューに関する操作が簡単なので、実現されませんでした.
以下は私のミッションです.
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();
}
}
ここで簡単な優先順位の列が実現されました.他のキューに関する操作が簡単なので、実現されませんでした.