佇列課下作業

FunnyOne發表於2017-10-16

佇列課下作業

作業要求

  • 1 補充課上沒有完成的作業
  • 2 參考15.3節,用自己完成的佇列(鏈隊,迴圈陣列佇列)實現模擬票務櫃檯排隊功能
  • 3 用JDB或IDEA單步跟蹤排隊情況,畫出佇列變化圖,包含自己的學號資訊
  • 4 把程式碼推送到程式碼託管平臺
  • 5 把完成過程寫一篇部落格:重點是單步跟蹤過程和遇到的問題及解決過程
  • 6 提交部落格連結
一、補充課上沒有完成的作業:將《Java程式設計與資料結構教程(第二版)》15章的15.5連結串列佇列的程式碼中的dequeue()、first()、isempty()、size()、toString()實現:
package ch15;

/**
 * Created by Funny_One on 2017/10/10.
 */
public class LinkedQueue<T> implements Queue<T> {
    private int count;
    private LinearNode<T> front,rear;

    //Creates an empty queue
    public LinkedQueue(){
        count =0;
        front = rear = null;
    }

    @Override
    public void enqueue(T element) {
        LinearNode<T> node = new LinearNode<T>(element);
        if(count == 0){
            front = node;
        }else {
            rear.setNext(node);
        }
        rear = node;
        count++;
    }

    @Override
    public T dequeue() throws EmptyCollectionException{
        T element = front.getElement();
        if(count == 1){
            front = rear = null;
        }else {
            front = front.getNext();
        }
        count--;
        return element;
    }

    @Override
    public T first() {
        T element = front.getElement();
        return element;
    }

    @Override
    public boolean isEmpty() {
        boolean judge=false;
        if (count == 0){
            judge = true;
        }
        return judge;
    }

    @Override
    public int size() {
        return count;
    }

    @Override
    public String toString(){
        String str1 = "<The head of the queue>";
        LinearNode<T> node = new LinearNode<T>();
        node = front;
        while (node!=null){

            if(node.getNext()==null){
                str1 += " "+ node.getElement() + " <The tail of the queue>";
            }else {
                str1 += " "+node.getElement()+",";
            }
            node = node.getNext();
        }
        return  str1;
    }
}
二、參考15.3節,用自己完成的佇列(鏈隊,迴圈陣列佇列)實現模擬票務櫃檯排隊功能

佇列課下作業

三、用JDB或IDEA單步跟蹤排隊情況,畫出佇列變化圖,包含自己的學號資訊

佇列課下作業

佇列分析(只列取至有兩位售票員的情況)

處理一個顧客需要的時間是120秒,下一個顧客距離上一個顧客到達的時間是15秒。

當一個售票員的時候:

當只有一個售票員的時候,顧客都得到這個售票員這裡買票,根據上面的條件,當該售票員處理一個顧客的時候,後面可以來8個顧客等待(120/15)。用99除以8(由於第一個到的已經開始在處理,所以要100-1),可以得到12餘3,根據該情況,需要處理13個顧客後才能100個顧客全部到齊。

佇列課下作業

當兩個售票員的時候:

根據程式碼的除錯,顧客排隊的順序是顧客的數量平均分給顧客,當兩個人的時候,可以理解成一個售票員處理50名顧客,用49除以8,可以得到6餘1,就是說要處理7個顧客後50人才能到齊。

佇列課下作業

後面的情況大同小異,可以如此類推。

相關文章