数据结构——队列和栈(介绍、类型、Java手搓实现循环队列)

我是一个计算机专业研0的学生卡蒙Camel🐫🐫🐫(刚保研)
记录每天学习过程(主要学习Java、python、人工智能),总结知识点(内容来自:自我总结+网上借鉴)
希望大家能一起发现问题和补充,也欢迎讨论👏👏👏

队列

队列介绍

队列(Queue)是一种遵循先进先出原则(FIFO, First In First Out)的数据结构(可以用数组或者链表实现),意味着最早添加到队列中的元素将是最先被移除的。这种特性使得队列在很多场景中非常有用,例如任务调度、缓冲处理等。

img

访问:O(n)//最坏情况
插入删除:O1//后端插入前端删除元素

队列类型

使用数组实现举例:

1. 线性队列(Linear Queue)

最简单的队列形式,具有固定的前端和后端。

2. 循环队列(Circular Queue)

一种优化后的线性队列,其中最后一个位置连接到第一个位置,形成环形结构,从而更高效地利用存储空间。

3. 优先队列(Priority Queue)

队列中的每个元素都有一个关联的优先级,出队时总是移除具有最高优先级的元素(一般使用堆实现)。Java 中提供了 PriorityQueue 类来实现这一功能。
在这里插入图片描述

4. 双端队列(Deque, Double-ended Queue)

允许在两端进行插入和删除操作,既可以在前端也可以在后端执行入队和出队操作。Java 提供了 Deque 接口以及它的多个实现类如 ArrayDequeLinkedList

自定义循环队列Java代码手搓实现🖊️

img

/**
 * @author:Camel
 * @date:2025/1/17
 * @description:循环队列
 */
public class CircularQueue<T> {
   
   
    private T[] elements; // 存储队列元素的数组
    private int front;    // 队首指针
    private int rear;     // 队尾指针
    private int capacity; // 队列的最大容量
    private int coun
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值