基本数据结构-队列(用Java语言实现)

队列

队列是一种只允许在表的前端进行删除操作且在表的后端进行插入操作的线性表。其中,执行插入操作的端叫作队尾,执行删除操作的端叫作队头。没有元素的队列叫作空队列,在队列中插入一个队列元素叫作入队,从队列中删除一个队列元素叫作出队。因为队列只允许在队头插入,在队尾删除,所以最早进入队列的元素将最先从队列
中删除,所以队列又叫作先进先出(FIFO) (first in first out)线性表。

具体数据结构如下:

在这里插入图片描述

方法功能描述
add()向队列尾部加一个元素(入队)
poll()删除队前头的元素(出队)
peek()取出队列头部的元素

我们来看看队列的数据结构:

public class Queue <E>{
    private Object [] data=null;
    private int maxSize;
    private int front;
    private int rear;

    public Queue(){
        this(10);
    }
     
    public Queue(int initalSize){
        if(initalSize>=0){
            this.maxSize=initalSize;
            data=new Object[initalSize];
            front=rear=0;
        }else {
            throw new RuntimeException("初始化大小不能小于0"+initalSize);
        }
    }
}

首先定义一个最大容量,头部和尾部指针,然后定义Object类型的data数组。

当front=rear=0时,队列是空队列。当有新数据加入时,rear指针加1,而rear指针不动。

向队列插入数据(add方法)

public boolean add(E e){
    if(maxSize==rear){
        throw new RuntimeException("队列已满,禁止插入数据");
    }else{
        data[rear++]=e;
        return true;
    }
}

当队尾加入数据时,队尾指针rear加一,一开始rear=0。

有新数据后,rear=1,那么我们可以得出data[rear++]=e

取走队列头部数据:

public E poll(){
    if(empty()){
        throw new RuntimeException("空队列异常")
    }else{
        E value=(E)data[front];
        data[front++]=null;
        return value;
    }
}

先把data[front]取出来,再置null,最后front+1.

peek()类似

public E peek(){
    if(empty()){
        throw new RuntimeException("空队列异常")
    }else{
        E value=(E)data[front];
        return value;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你们卷的我睡不着QAQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值