队列是一种先进先出的数据结构,是只允许在一端进行插入,另一端进行删除操作的线性表,在队尾插入,队头删除,

import java.util.Arrays;

class Queue{
    // 存储队列的元素
    private int[] queue;
    // 队头
    private int front;
    // 队尾
    private int rear;

    // 15
    public Queue() {
        this(15);
    }

    // 自定义队列大小
    public Queue(int size) {
        this.queue =new int[size];
        this.rear = 0;
        this.front = 0;
    }

    // 入队操作
    public void offer(int val){
       if(full()){
//如果队列满,则进行队列的扩容
           this.queue = Arrays.copyOf(this.queue,this.queue.length*2);
       }
       this.queue[rear] = val;
       this.rear = (this.rear + 1) % this.queue.length; //循环队列
    }

    // 出队,并把元素返回
    public int poll(){
        int val = queue[front];
        this.front++;
        return val;
    }

    // 查看队头元素
    public int peek(){
        return this.queue[front];
    }

    // 判断队满
    public boolean full(){
        return (this.rear + 1) % this.queue.length == this.front;
    }

    // 判断队空
    public boolean empty(){
        return rear == front;
    }
    public String toString() {
        String str=new String();
        for(int i=0;i<this.rear;i++) {
            str = str + this.queue[i] + " ";
        }
        return str;
    }
}

public class QueueTest {
    public static void main(String[] args) {
        Queue queue = new Queue();
        for (int i = 0; i < 20; i++) {
            queue.offer(i+1);
        }
        System.out.println(queue);

    }
}

  

其本质仍是一个数组。

02-12 21:59