JAVA学习之队列

队列:

先进先出(FIFO)。数组实现。

JAVA源码:

import java.util.ArrayList;

class MyQueue<T>{
    private int front;
    private int rear;
    private int size;
    private T[] arr;

    public MyQueue(){
        front=0;
        rear=0;
        size=0;
        arr=(T[])new Object[8];
    }

    public int size(){
        return size;
    }
    public boolean isEmpty(){
        return size==0;
    }
    public boolean isFull(){
        return size==arr.length;
    }
    public void resize(){
        T[] tmp=(T[])new Object[arr.length*2];
        System.arraycopy(arr,0,tmp,0,arr.length);
        arr=tmp;
        tmp=null;
    }
    public void enQueue(T t){
        if(isFull()){
            resize();
            front=0;
        }
        rear=(front+size)%arr.length;
        arr[rear]=t;
        size++;
    }

    public T deQueue(){
        if(isEmpty()){
            throw new RuntimeException("Nothing left");
        }
        T tmp=arr[front];
        arr[front]=null;
        front=(front+1)%arr.length;
        size--;
        return tmp;
    }

    public T front(){
        return arr[front];
    }

}

public class Queue {
    public static void main(String[] args){
        MyQueue<Integer> qq=new MyQueue<Integer>();
        for(int i=10;i<20;i++){
            qq.enQueue(i);
        }
        System.out.println("SIZE: "+qq.size());
        System.out.println("FRONT: "+qq.front());
        System.out.println("OUT:"+qq.deQueue());
        System.out.println("SIZE: "+qq.size());
        System.out.println("FRONT: "+qq.front());
        System.out.println("OUT:"+qq.deQueue());
    }
}

输出结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值