队列

队列

1. 定义与特点

队列简称“队”,是一种操作受限的线性表,在表的一端进行插入操作,另一端进行删除操作。采用“先进先出”(First In First Out)

应用:多线程中等待队列和阻塞队列。

2. 队列操作与存储结构

2.1.1 队列操作

public interface Queue{
    int getSize();//获取队列长度
    boolean isEmpty();//判空
    void enqueue(Object e)//入队
    void dequeue();//出队
    Object peek();//取队首元素
}

2.1.2 存储结构

1,顺序结构:基于数组
在这里插入图片描述

缺点:通过出队操作弹出队列后 ,front之前的空间不能再使用,这样会导致大量空间丢失

解决办法,使用循环数组

2,链式结构:基于链表

队列的链式储存可以使用单链表来实现

队首指针指向队首元素前的一个节点,即始终指向链表空的头节点,队尾指针指向队列当前队尾元素所在的节点

当队列为空时,队首指针与队尾指针指向空的头节点

在这里插入图片描述

在这里插入图片描述

3,双端队列

双端队列就是指两端都可以进行进队和出队操作的队列。将队列的两端你分别称为前端和后端,两端都可以入队和出队,其元素的逻辑结构仍是线性结构。

双端队列既可以用来队列操作,也可以用来实现栈操作。
在这里插入图片描述

输出受限的双端队列:即一个端点允许插入与删除,另一个端点只允许插入的双端队列

在这里插入图片描述

输入受限的双端队列:一个端点允许插入与删除,另一个端点只允许输入的双端队列

在这里插入图片描述

3.JAVA中的栈与队列

Stack类:栈类(过时)

public class stack<E> extends Vector<E>

Queue类:队列类

Deque(父接口为Queue):双端队列 栈操作使用

实现类:ArrayDeque (数组结构)

​ LinkedList(线性表,队列,栈皆可用)

使用

实现类:ArrayDeque (数组结构)

​ LinkedList(线性表,队列,栈皆可用)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值