วันอาทิตย์ที่ 2 พฤศจิกายน พ.ศ. 2557

Lab 5[Continue] : Task#2 - Queue[fixed]

/*
>>>Basic Array Queue<<<
Mod. able Variable List
  1. maxQ = Max queue size
Method List
  1. come(String name,int priority) ==> Add a new case with priority to the queue
  2. come(String name) ==> Add a new case without priority to the queue
  3. go() ==> remove first case in the queue & shift others instead
*/

class Queue
{
  Case[] queue;
  int maxQ;
  Queue(int maxQ)
  {
    this.queue=new Case[maxQ];
    this.maxQ=maxQ;
    reset();
  }
  void come(String name,int priority)
  {
    int index;
    index=findInsertIndex(priority);
    insertCase(name,priority,index);
  }
  void come(String name)
  {
    int index;
    index=findLastIndex();
    insertNormalCase(name,index);
  }
    int findInsertIndex(int priority)
    {
      int index=maxQ;
      for(int i=maxQ-1;i>=0;i--)
      {
        if(priority>queue[i].priority)
        {
          index=i;
        }
      }
      return index;
    }
    int findLastIndex()
    {
      int last=maxQ;
      for(int i=maxQ-1;i>=0;i--)
      {
        if(queue[i].priority==0)
        {
          last=i;
        }
      }
      return last;
    }
    void insertCase(String name,int priority,int index)
    {
      for(int i=maxQ-1;i>index;i--)
      {
        queue[i]=queue[i-1];
      }
      queue[index]=new Case(name,priority);
    }
    void insertNormalCase(String name,int index)
    {
      if(index!=maxQ)
      {
        for(int i=maxQ-1;i>index;i--)
        {
          queue[i]=queue[i-1];
        }
        queue[index]=new Case(name,queue[index-1].priority);
      }
    }
  void go()
  {
    for(int i=0;i<maxQ-1;i++)
    {
      queue[i]=queue[i+1];
    }
    queue[maxQ-1]=new Case("None",0);
  }
  void reset()
  {
    for(int i=0;i<this.maxQ;i++)
    {
      this.queue[i]=new Case("None",0);
    }
  }
  void show()
  {
    println("Name - Priority");
    for(int i=0;i<maxQ;i++)
    {
      println(this.queue[i]);
    }
  }
}

class Case
{
  String name;
  int priority;
  Case(String name,int priority)
  {
    this.name=name;
    this.priority=priority;
  }
  String toString()
  {
    String string;
    string=this.name+" - "+this.priority;
    return string;
  }
}

void setup()
{
  Queue q1=new Queue(5);
  q1.come("A",10);
  q1.come("B",9);
  q1.come("C",8);
  q1.come("D",9);
  q1.come("E");
  q1.go();
  q1.go();
  q1.show();
}

ไม่มีความคิดเห็น:

แสดงความคิดเห็น