数据结构的队列

ops/2025/2/1 12:48:09/

一.队列

1.队列(Queue)的概念就是先进先出。

2.队列的用法,红色框和绿色框为两组,offer为插入元素,poll为删除元素,peek为查看元素红色的也是一样的。

3.LinkedList实现了Deque的接口,Deque又继承于Queue所以,LinkedList可以实现Queue接口

4.这里先删除的1,因为队列是先进先出。然后再不断的取第一个元素。(offer是尾插poll是头删)

二.链表实现队列

通过双向链表的尾插和头删就可以进行队列的模拟比较简单不赘述:

三.数组实现队列

1.这里需要用到循环的数组来进行实现队列。

2.这里我们有三种方法可以来判断数组是否放满或者为空:(下面是我用第3个方法来实现这个队列)

3.这里计算last的位置的时候不能直接++或者用first(头)++,因为一直++可能会越界,所以这里用(last + 1) % len(数组的长度),这样就不会越界。

4.代码展示:

循环数组作为队列,需要头和尾,头来进行删除数据,尾部进行插入数据,在扩建数组的长度的时候需要注意我要把数组的大小增大一倍,因为我是通过判断下一个位置是否为头来判断数组是否满了。这里还需要注意的是,删除数据的时候我们要知道,first也要和last一样通过公式(last + 1) % len(数组的长度)来计算。还需要注意的是获取队尾元素的时候,last可能会在0位置,那么就没办法last-1来找到这个数据了,这个时候我们要通过判断last是否为0,如果为0就直接返回数组长度-1作为下标来获取队尾元素,不能直接返回0的下标,因为你要获取的是队尾元素相当于是0的上一个数据是队尾-1元素的下标的数据,而不是0位置这个数据.

7.双端队列(Deque):两边都可以入队和出队。并且这里还可以通过双端队列来实现队列和栈。需要注意的是Deque是接口,需要创建一个LinkedList的对象才能实现:

8.用法一看便知:

9.队列实现栈:(这里我们是通过两个队列来实现栈的,我们规定两个队列都为空的时候第一个队列存放数据,pop是通过将部位空的队列的n-1个数据移动到空队列中,再将最后一个数据pull出去就是栈pop的元素,获取栈顶元素也是同样的思路,但是栈顶元素需要将n个数据传入到空队列中,并且保存下最后一个数据)

10.栈实现队列:(思路就还是两个栈来实现这个队列,不管什么情况都是把数据放在第一个栈中,当需要队列poll数据的时候我自己实现的两个栈就需要把第一个栈的数据全部pop到第二个栈中来push然后再通过第二个栈来push,因为这样到第二个栈的时候数据就是倒过来的就可以直接push。代码中再pop的时候没有进行判断两个栈是否为空,如果两个栈都为空要返回--1,来判断)


http://www.ppmy.cn/ops/154746.html

相关文章

2025数学建模美赛|D题成品论文

通往更美好城市的路线图 摘要 本研究旨在通过改善巴尔的摩市的交通系统来提升居民的生活质量,分析了三种关键交通项目:大桥修复、公交系统优化和步行网络完善,并评估了它们对城市交通流动性、环境影响和居民满意度的综合影响。通过构建交通…

Java小白入门教程:内置数据类型(四类八种)和引用数据类型

目录 一、内置数据类型(四类八种) 1. 整数类型(四种子类型) 2. 浮点类型(两种子类型) 3. 字符类型(一种子类型) 4. 布尔类型(一种子类型) 二、引用数据类…

开发环境搭建-4:WSL 配置 docker 运行环境

在 WSL 环境中构建:WSL2 (2.3.26.0) Oracle Linux 8.7 官方镜像 基本概念说明 容器技术 利用 Linux 系统的 文件系统(UnionFS)、命名空间(namespace)、权限管理(cgroup),虚拟出一…

蓝桥杯之c++入门(一)【第一个c++程序】

目录 前言一、第⼀个C程序1.1 基础程序1.2 main函数1.3 字符串1.4 头文件1.5 cin 和 cout 初识1.6 名字空间1.7 注释 二、四道简单习题(点击跳转链接)练习1:Hello,World!练习2:打印飞机练习3:第⼆个整数练习4&#xff…

MySQL知识点总结(十六)

请说明在复制拓扑中,中继日志集和从属服务器状态日志的作用。 中继日志用来保存从主服务器接受的二进制日志,与二进制日志相同的格式存储,由服务器自动管理,在其全部内容重放后会自动删除。 从属服务器状态日志存储关于如何连接…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.25 视觉风暴:NumPy驱动数据可视化

1.25 视觉风暴:NumPy驱动数据可视化 目录 #mermaid-svg-i3nKPm64ZuQ9UcNI {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-i3nKPm64ZuQ9UcNI .error-icon{fill:#552222;}#mermaid-svg-i3nKPm64ZuQ9UcNI …

全球AI模型百科全书,亚马逊云科技Bedrock上的100多款AI模型

今天小李哥给大家介绍的是亚马逊云科技上的AI模型管理平台Amazon Bedrock上的Marketplace,这是亚马逊云科技在今年re:Invent发布的一个全新功能,将亚马逊的电商基因带到了其云计算平台,让我们能够通过Amazon Bedrock访问100多种流行、新兴和专…

WPF常见面试题解答

以下是WPF(Windows Presentation Foundation)面试中常见的问题及解答,涵盖基础概念、高级功能和实际应用,帮助你更好地准备面试: 基础概念 什么是WPF? WPF是微软开发的用于构建桌面应用程序的UI框架&#x…