算法通关村第五关-白银挑战实现队列
大纲
- 队列基础
- 队列的基本概念和基本特征
- 实现队列
- 队列的基本操作
- Java中的队列
队列基础
队列的基本概念和基本特征
队列的特点是节点的排队次序和出队次序按入队时间先后确定,即先入队者先出队,后入队者后出队,即我们常说的FIFO(first in first out)先进先出。队列实现方式也有两种形式,基于数组和基于链表。
更好的理解队列
我们用一个生活中的例子来说明。假如公路上有一条单行隧道,所有通过隧道的车辆只允许从隧道入口驶入,从隧道出口驶出,不允许逆行。
因此,要想让车辆驶出隧道,只能按照它们驶入隧道的顺序,先驶入的车辆先驶出,后驶入的车辆后驶出,任何车辆都无法跳过它前面的车辆提前驶出。
它的特征和行驶车辆的单行隧道很相似。
不同于栈的先入后出,队列中的元素只能先入先出(First In First Out,简称FIFO)。队列的出口端叫作队头(front),队列的入口端叫作队尾(rear)。
实现队列
队列的数组实现如下 :
队列的链表实现如下 :
队列的基本操作
数组实现 :
入队
入队(enqueue)就是把新元素放入队列中,只允许在队尾的位置放入元素,
新元素的下一个位置将会成为新的队尾
出队
出队操作(dequeue)就是把元素移出队列,只允许在队头一侧移出元素,出
队元素的后一个元素将会成为新的队头
Java中的队列
java代码以链表的形式实现队列 :
我们在自己设计的时候根据自己的需求定义 , 这里简单实现了队列
package src.sl.stack;/*** 队列*/
public class MyQueue {//虚拟节点private Node dum = new Node(-1,null);private Node last = dum;/*** 节点*/private class Node{int val;Node next;public Node(int val,Node next) {this.val = val;this.next = next;}}/*** 入队* @param value*/public void push(int value){Node node = new Node(value, null);node.next = dum.next;dum.next = node;last = node;}/*** 出队*/public void pull(){if (dum.next == null){throw new RuntimeException("队列为空!!!");}dum.next = dum.next.next;}/*** 遍历队列*/public void forEach(){Node temp = dum.next;while (temp != null){System.out.print(temp.val + " ");temp = temp.next;}}
}
测试 :
package src.sl.stack;public class QueueTest {public static void main(String[] args) {MyQueue myQueue = new MyQueue();myQueue.push(1);myQueue.push(2);myQueue.push(3);myQueue.push(4);myQueue.push(5);myQueue.forEach();myQueue.pull();myQueue.pull();myQueue.pull();myQueue.forEach();}
}
这期就到这里 , 下期见!
相关文章:

算法通关村第五关-白银挑战实现队列
大纲 队列基础队列的基本概念和基本特征实现队列队列的基本操作Java中的队列 队列基础 队列的基本概念和基本特征 队列的特点是节点的排队次序和出队次序按入队时间先后确定,即先入队者先出队,后入队者后出队,即我们常说的FIFO(first in fi…...

协力共创智能未来:乐鑫 ESP RainMaker 云方案线下研讨会圆满落幕
近日,乐鑫 ESP RainMaker 云方案线下研讨会(深圳)在亚马逊云科技与合作伙伴嘉宾的支持下成功举办,吸引了众多来自智能家电、照明电工、能源和宠物等行业的品牌客户、方案商和制造商。研讨会围绕如何基于乐鑫 ESP RainMaker 硬件连…...

读取谷歌地球的kml文件中的经纬度坐标
最近我在B站上传了如何获取研究边界的视频,下面分享一个可以读取kml中经纬度的matlab函数,如此一来就可以获取任意区域的经纬度坐标了。 1.谷歌地球中划分区域 2.matlab读取kml文件 function [sname,lon,lat] kml2xy(ip_kml) % ip_kml ocean_distubu…...

1深度学习李宏毅
目录 机器学习三件事:分类,预测和结构化生成 2、一般会有经常提到什么是标签label,label就是预测值,在机器学习领域的残差就是e和loss编辑3、一些计算loss的方法:编辑编辑 4、可以设置不同的b和w从而控制loss的…...

Flask_Login使用与源码解读
一、前言 用户登录后,验证状态需要记录在会话中,这样浏览不同页面时才能记住这个状态,Flask_Login是Flask的扩展,专门用于管理用户身份验证系统中的验证状态。 注:Flask是一个微框架,仅提供包含基本服务的…...

利用Graviton2和S3免费套餐搭建私人网盘
网盘是一种在线存储服务,提供文件存储,访问,备份,贡献等功能,是我们日常中不可或缺的一种服务。很多互联网公司都为个人和企业提供免费的网盘服务。但这些免费服务都有一些限制,比如限制下载速度࿰…...
跟着GPT学设计模式之单例模式
单例设计模式(Singleton Design Pattern)一个类只允许创建一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式。 单例有几种经典的实现方式,…...
【MySQL索引与优化篇】数据库调优策略
数据库调优策略 文章目录 数据库调优策略1. 数据库调优的措施1.1 调优目标1.2 如何定位调优问题1.3 调优的维度和步骤第1步:选择合适的DBMS第2步:优化表设计第3步:优化逻辑查询第4步:优化物理查询第5步:使用 Redis 或 …...
基于BP神经网络的风险等级预测,BP神经网络的详细原理,
目录 背影 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 代码链接:基于BP神经网络的风险等级评价,基于BP神经网络的风险等级预测(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.n…...

最新Ai智能创作系统源码V3.0,AI绘画系统/支持GPT联网提问/支持Prompt应用+搭建部署教程
一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…...

项目资源不足,常见的5种处理方式
软件开发中,经常会遇到项目资源不足的情况,项目团队如果无法及时获得所需的人力、财力、物力等资源,往往会影响团队士气以及任务质量,造成无法按时完成任务,进而影响项目进度。 因此及时处理和应对资源不足的情况&…...

ER图设计神器,帮你省时省力,高效完成工作!
ER图(Entity-Relationship Diagram)工具用于设计数据库模型,通常用于表示数据实体、关系和属性之间的关系。以下是10个好用的ER图工具。 一、Lucidchart Lucidchart 是一款基于云的协作式图表设计工具,它允许用户创建、编辑和共享…...

Notepad++下载、使用
下载 https://notepad-plus-plus.org/downloads/ 安装 双击安装 选择安装路径 使用 在文件夹中搜索 文件类型可以根据需要设置 如 *.* 说明是所有文件类型; *.tar 说明是所有文件后缀是是tar的文件‘;...

基于若依的ruoyi-nbcio流程管理系统增加仿钉钉流程设计(一)
更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 仿钉钉的开源项目网上也不少,而且很多功能已经也比较完善了,但大部分都不是MIT协议…...

【知网检索征稿】第九届社会科学与经济发展国际学术会议 (ICSSED 2024)
第九届社会科学与经济发展国际学术会议 (ICSSED 2024) 2024 9th International Conference on Social Sciences and Economic Development 第九届社会科学与经济发展国际学术会议(ICSSED 2024)定于2024年3月22-24日在中国北京隆重举行。会议主要围绕社会科学与经济发展等研究…...

带你人工识别C#开源库BarcodeLib生成的一维码Code128
我们是做HIS系统开发的,前段时间发现某些处方的一维码出现无法识别的情况。看了一下一维码生成的逻辑,使用到了BarcodeLib库,经过反复确认,我们程序是没有问题的。后面不得不反编译看一下BarcodeLib生成一维码的逻辑。最后调整一维…...
软考 系统架构设计师系列知识点之系统架构评估(6)
接前一篇文章:软考 系统架构设计师系列知识点之系统架构评估(5) 所属章节: 第8章. 系统质量属性与架构评估 第2节. 系统架构评估 8.2.1 系统架构评估中的重要概念 相关试题 3. 正确识别风险点、非风险点、敏感点和权衡点是进行软…...

指挥通信车360度3d虚拟互动展示系统的优势及特点
通信车是装有通信装备,用于保障通信联络的专用车辆,用于偏僻/特殊环境下的机动通信。并且机动通信局装备通常分为应急综合通信车、网络管理车、程控电话车、自适应跳频电台车、数字扩频接力车、散射通信车、卫星通信车、光缆引接车、线缆收放车和通信电源…...

根据Aurora发送时序,造Aurora 发送数据包
首先Aurora采用AXIS接口 由于后续需要进行AXIS接口 不同时钟域的数据位宽转换(64bit和256bit之间的转换),因此分两次走。 第一种方法:采用AXIS数据位宽转换IP AXIS跨时钟域IP 第二种方法:逻辑完成 下面记录逻辑…...

vue实现一个账号在同一时间只有一个能登录的效果
目录 1.实现方法 2.实现示例 1.实现方法 要实现一个账号在同一时间只有一个能登录的效果,你可以使用以下步骤来实现: 在后端服务器端设置一个标志位,用于标记用户是否已登录。这个标志位可以存储在数据库中或者缓存在服务器内存中。当用户…...
实时同步缓存,与阶段性同步缓存——补充理解《补充》
根据 Redis 缓存的数据与 DBMS 中数据的同步性划分,缓存一般可划分为两类:实时同步缓存,与阶段性同步缓存。 实时同步缓存是指,DBMS 中数据更新后,Redis 缓存中的存放的相关数据会被立即清 除,以促使再有对…...
JSR 303(即 Bean Validation)是一个通过注解在 Java Bean 上定义和执行验证规则的规范
🛠️ 一、JSR 303是什么? JSR 303(Java Specification Requests 303)是Java EE 6的子规范,全称Bean Validation。它通过注解方式对JavaBean的属性值进行标准化校验,例如检查非空、长度、格式等规则…...

程序人生-hellohelloo
计算机系统 大作业 题 目 程序人生-Hello’s P2P 专 业 计算机与电子通信 学 号 2023111976 班 级 23L0504 学 生 孙恩旗 指 导 教 师 刘宏伟 计算机科…...

python分配方案数 2023年信息素养大赛复赛/决赛真题 小学组/初中组 python编程挑战赛 真题详细解析
python分配方案数 2023全国青少年信息素养大赛Python编程挑战赛复赛真题解析 博主推荐 所有考级比赛学习相关资料合集【推荐收藏】1、Python比赛 信息素养大赛Python编程挑战赛 蓝桥杯python选拔赛真题详解...

第三方软件评测机构如何助力软件品质提升及企业发展?
第三方软件评测机构与软件开发者及使用者无直接关联,它们提供全方位的检测和公正的评价服务。这样的评测可以展现客观的成效,对提升软件的品质具有显著影响,且在软件产业中发挥着至关重要的角色。 评测的客观性 独立第三方机构与软件开发者…...

从0到1上手Trae:开启AI编程新时代
摘要:字节跳动 2025 年 1 月 19 日发布的 Trae 是一款 AI 原生集成开发环境工具,3 月 3 日国内版推出。它具备 AI 问答、代码自动补全、基于 Agent 编程等功能,能自动化开发任务,实现端到端开发。核心功能包括智能代码生成与补全、…...

Electron-vite【实战】MD 编辑器 -- 系统菜单(含菜单封装,新建文件,打开文件,打开文件夹,保存文件,退出系统)
最终效果 整体架构 src/main/index.ts import { createMenu } from ./menu在 const mainWindow 后 // 加载菜单createMenu(mainWindow)src/main/menu.ts import { BrowserWindow, Menu, MenuItem, MenuItemConstructorOptions, dialog, shell } from electron import fs from…...

桥 接 模 式
在玩游戏的时候我们常常会遇到这样的机制:我们可以随意选择不同的角色,搭配不同的武器。这时只有一个抽象上下文的策略模式就不那么适用了,因为一旦我们使用继承的方式,武器和角色总有一方会变得难以扩展。这时,我们就…...

NW969NW978美光闪存颗粒NW980NW984
NW969NW978美光闪存颗粒NW980NW984 技术解析:NW969、NW978、NW980与NW984的架构创新 美光(Micron)的闪存颗粒系列,尤其是NW969、NW978、NW980和NW984,代表了存储技术的前沿突破。这些产品均采用第九代3D TLC…...
黑马程序员C++核心编程笔记--4 类和对象--封装
C面向对象三大特征:封装、继承、多态 C认为万事万物皆对象,对象有其属性和行为,具有相同性质的对象可以抽象称为类 4.1 封装 4.1.1 封装的意义 将属性和行为作为一个整体,表现生活中的事物将属性和行为加以权限控制 在设计类…...