首页 > 编程语言 > 详细

普通数组-队列

时间:2019-08-28 23:49:58      阅读:91      评论:0      收藏:0      [点我收藏+]
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));
    }
}

 

普通数组-队列

原文:https://www.cnblogs.com/biexei/p/11426926.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!