队列——Java实现

基本结构

队列主要的特性是先进先出(FIFO)
先看一下队列的基本结构

    private Object[] data = null;
    private int maxSize;// 队列的容量
    private int front;// 头
    private int rear;// 尾

data 用来存放队列中的值

初始化队列

public MyQueue(int max) {
        // 初始化
        this.maxSize = max;
        data = new Object[max];
        front = 0;
        rear = 0;
    }

front 和 rear 这个时候都指向队列的头部

判断队列是否为空,或者已满

应为开始的时候,front和rear都是指在头部,那只要front==rear这个队列就是空队列,当rear==maxsize的时候就代表,队列已经满了

// 判断队列是否为空
    public boolean isEmpty() {
        if (rear == front)
            return true;
        else
            return false;
    }
    //判断队列是否满
    public boolean isFull(){
        if(rear == maxSize)
            return true;
        else
            return false;
    }

入队

入队的思路为,将新进来的数据放在队尾所指的位置,然后让对尾向后移动一位,队首永远指在队列的头部

// 入队
    public void add(Object ob) {
        if(isFull())
            System.out.println("队列已经满了");
        data[rear++] = ob;
    }

出队

出队的思路为,我们把头指针指向位置的数据出队,然后头这个位置就空出来了,再让后面的挨个往前完成出队,当然这个方式的缺点也很明显,队列越长,一次出队越麻烦,用链表的话可以解决这个问题。

// 出队一个
    public Object pop() {
        if(isEmpty()){
            System.out.println("空队,不能出");
            return null;
        }
        Object MyRuturn = data[front];//要出队的项
        for (int i = front; i < rear; i++) {
            data[i] = data[i + 1];
        }   
        rear--;
        return MyRuturn;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值