普通数组-队列

package data.struct;

import java.util.Arrays;

public class ArrayQueue {

    private int maxSize;//队列最大长度
    private int head;//队列头
    private int tail;//队列尾
    private int[] array;
    
    public static void main(String[] args) {
        ArrayQueue queue = new ArrayQueue(3);
        queue.showHead();//0
        queue.add(1);
        queue.showHead();//1
        queue.showQueue();//[1, 0, 0]
        queue.add(2);
        queue.showQueue();//[1, 2, 0]
        queue.add(3);
        queue.showQueue();//[1, 2, 3]
        System.out.println(queue.get());//1
        queue.showHead();//2
        System.out.println(queue.get());//2
        System.out.println(queue.get());//3
    }
    
    public ArrayQueue(int maxSize) {
        if(maxSize < 0) {
            throw new RuntimeException("invalid param");
        }
        this.maxSize = maxSize;
        array = new int[maxSize];
        head = 0;//队列首位置
        tail = -1;//队列位位置
    }
    
    public boolean isEmpty() {
        return tail < head;//tail == head, 则代表队列恰好有一个元素
    }
    
    public boolean isFull() {
        return tail == maxSize - 1;
    }
    
    //出队列
    public int get() {
        if(isEmpty()) {
            throw new RuntimeException("array queue is empty");
        }
        head++;
        return array[head-1];
    }
    
    //入队列
    public void add(int num) {
        if(isFull()) {
            throw new RuntimeException("arrat queue is full");
        }
        tail++;
        array[tail] = num;
    }
    
    //打印队列头
    public void showHead() {
        System.out.println(array[head]);
    }
    
    //打印整个队列
    public void showQueue() {
        System.out.println(Arrays.toString(array));
    }
}

 

posted @ 2019-08-28 22:21  孙^_^川先生  阅读(140)  评论(0编辑  收藏  举报