数据结构与算法(九)数组实现简单队列1

队列的特点是先入先出,可以有多种实现方式,今天我们使用数组来简单实现一下

/**
 * 使用数组实现简单的队列结构
 * 第一种实现:一个位置只使用一次,head和tail不断地移动
 * 入队一个元素,tail后移;出队一个元素,head后移;
 * 如果size<1说明队列空了;如果tail>=dataArray.length-1说明队列满了,需要扩容
 */
public class MyArrayQueue {
    String[] dataArray;
    private int size;
    private int head;
    private int tail;

    public MyArrayQueue(){
        dataArray=new String[8];
        size=0;
        head=0;
        tail=-1;
    }
    public MyArrayQueue(int length){
        dataArray=new String[length];
        size=0;
        head=0;
        tail=-1;
    }

    //往队列尾部添加一个元素
    public void append(String data){
        //如果队列已满,则扩容
        if(tail>=dataArray.length-1){
            String[] tempArray = new String[dataArray.length*2];
            for(int i=0;i<size;i++){
                tempArray[i]=dataArray[head+i];
            }
            dataArray=tempArray;
            head=0;
            tail=size-1;
        }
        tail++;
        dataArray[tail]=data;
        size++;
    }

    //从队列头部出一个元素
    public String remove1(){
        if(size<1){
            System.out.println("队列为空");
            return null;
        }else{
            String result = dataArray[head];
            head++;
            size--;
            return result;
        }
    }
}

这种实现方式就是不停的去往后排队,只要队列中的位置全被使用过了,就换新的数组,下一篇,我们将对这种结构进行优化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值