1. 程式人生 > >隊列及循環隊列(Java實現)

隊列及循環隊列(Java實現)

數據 pub remove rgs public 個數 system style --

package ch03;

/*
 * 隊列類
 */
public class MyQueue {
    // 底層實現是一個數組
    private long[] arr;
    // 有效數據大小
    private int elements;
    // 隊頭
    private int front;
    // 隊尾
    private int end;

    /**
     * 默認構造方法
     */
    public MyQueue() {
        arr = new long[10];
        elements = 0;
        front 
= 0; end = -1; } /** * 帶參數的構造方法,參數為數組的大小 */ public MyQueue(int maxsize) { arr = new long[maxsize]; elements = 0; front = 0; end = -1; } /** * 添加數據,從隊尾插入 */ public void insert(long value) { arr[++end] = value; elements
++; } /** * 刪除數據,從隊頭刪除 */ public long remove() { elements--; return arr[front++]; } /** * 查看數據,從隊頭查看 */ public long peek() { return arr[front]; } /** * 判斷是否為空 */ public boolean isEmpty() { return elements == 0; }
/** * 判斷是否滿了 */ public boolean isFull() { return elements == arr.length; } }
package ch03;

/*
 * 循環隊列類
 */
public class MyCycleQueue {
    // 底層實現是一個數組
    private long[] arr;
    // 有效數據大小
    private int elements;
    // 隊頭
    private int front;
    // 隊尾
    private int end;

    /**
     * 默認構造方法
     */
    public MyCycleQueue() {
        arr = new long[10];
        elements = 0;
        front = 0;
        end = -1;
    }

    /**
     * 帶參數的構造方法,參數為數組的大小
     */
    public MyCycleQueue(int maxsize) {
        arr = new long[maxsize];
        elements = 0;
        front = 0;
        end = -1;
    }

    /**
     * 添加數據,從隊尾插入
     */
    public void insert(long value) {
        if (end == arr.length - 1) {
            end = -1;
        }
        arr[++end] = value;
        elements++;
    }

    /**
     * 刪除數據,從隊頭刪除
     */
    public long remove() {
        long value = arr[front++];
        if (front == arr.length) {
            front = 0;
        }
        elements--;
        return value;
    }

    /**
     * 查看數據,從隊頭查看
     */
    public long peek() {
        return arr[front];
    }

    /**
     * 判斷是否為空
     */
    public boolean isEmpty() {
        return elements == 0;
    }

    /**
     * 判斷是否滿了
     */
    public boolean isFull() {
        return elements == arr.length;
    }
}
package ch03;

public class TestMyQueue {
    public static void main(String[] args) {
        MyCycleQueue mq = new MyCycleQueue(4);
        mq.insert(23);
        mq.insert(45);
        mq.insert(13);
        mq.insert(1);

        System.out.println(mq.isFull());
        System.out.println(mq.isEmpty());

        System.out.println(mq.peek());
        System.out.println(mq.peek());

        while (!mq.isEmpty()) {
            System.out.print(mq.remove() + " ");
        }
        System.out.println();

        mq.insert(23);
        mq.insert(45);
        mq.insert(13);
        mq.insert(1);

        while (!mq.isEmpty()) {
            System.out.print(mq.remove() + " ");
        }
    }
}

隊列及循環隊列(Java實現)