当前位置: 首页 > news >正文

数据结构:队列

文章目录

  • 队列
    • 一,概述
    • 二,添加数据
    • 三,删除数据


队列

一,概述

队列是一种特殊的数据结构,它遵循先进先出(FIFO)的原则。在队列中,元素被添加到末尾,并从头部移除。队列只允许在一端进行插入操作,而在另一端进行删除操作。

队列可以形象地理解为排队买票:先来的人先买票,后来的人只能在队伍末尾等待,不允许插队。同样地,队列中的元素也是先来的先被移除。

队列的基本操作包括:

  1. 入队(enqueue):在队列的末尾添加一个元素。
  2. 出队(dequeue):从队列的头部移除一个元素。
  3. 判断队列是否为空(isEmpty)。
  4. 查看队头元素(front):返回队列头部的元素但不移除它。
  5. 查看队列长度(size)。

队列可以通过数组或链表来实现。在数组中,当队列满时,数组的尾指针指向下一个可用的空间;在链表中,当队列满时,最后一个节点的next指针指向下一个可用的空间。

需要注意的是,在使用队列时,必须保证队列不被溢出。在队列为空时,必须避免进行出队操作;在队列已满时,必须避免进行入队操作。可以通过一些策略来避免这种情况,例如使用循环队列或使用两个指针来分别指示队列的头部和尾部。

总之,队列是一种常见的数据结构,它广泛应用于各种场景,如生产者-消费者问题、缓冲区处理等等。掌握队列的基本概念和操作方法对于数据结构和算法的学习非常有帮助。

简介

  • 队列是一种特殊的线性表,具有特殊的添加和删除规则。
  • 队列只允许在表的后端添加元素,而在前端删除元素。
  • 队列中的元素按照添加的顺序排列,即先添加的元素在队列的前端,后添加的元素在队列的后端。

图示

  Rear                       Front+----+----+----+----+    +----+----+| 1  | 2  | 3  | 4  |    | 5  | 6  |+----+----+----+----+    +----+----+

在上面的队列示例中,元素1、2、3、4是按照添加的顺序排列的。新添加的元素5和6被添加到队列的后端。当元素被删除时,最前端的元素(这里是元素1)将被首先删除。

Java示例

在Java中,可以使用java.util.Queue接口来实现队列。Queue接口有很多实现,例如LinkedListArrayDeque等。以下是一个简单的示例:

import java.util.Queue;
import java.util.LinkedList;public class QueueExample {public static void main(String[] args) {Queue<Integer> queue = new LinkedList<>();// 添加元素到队列queue.add(1);queue.add(2);queue.add(3);queue.add(4);System.out.println("Initial Queue: " + queue);// 删除元素(队头元素)System.out.println("Removed element: " + queue.remove());System.out.println("Queue after removal: " + queue);}
}

在这个示例中,首先创建了一个整数类型的队列,然后使用add方法向队列中添加元素。接着,使用remove方法删除队列的前端元素。

二,添加数据

在Java中,使用java.util.Queue接口可以实现队列数据结构。Queue接口提供了一种方法来添加元素到队列的尾部,这种方法叫做add()

以下是一个简单的示例,演示如何使用Queue接口和LinkedList类来实现队列,并向队列中添加元素:

import java.util.Queue;
import java.util.LinkedList;public class Main {public static void main(String[] args) {// 创建一个新的队列Queue<String> queue = new LinkedList<>();// 向队列添加元素queue.add("元素1");queue.add("元素2");queue.add("元素3");// 打印队列的元素for (String element : queue) {System.out.println(element);}}
}

在上述代码中,首先导入了QueueLinkedList类。然后,创建了一个新的Queue对象,并使用add()方法向队列添加了三个元素。最后,用一个for-each循环来遍历并打印队列中的每个元素。

当运行这个程序时,它会按照它们被添加到队列的顺序(即先进先出,或FIFO)打印出这三个元素。

三,删除数据

在Java中,队列(Queue)数据结构的删除操作主要有两种:出队(remove())和删除指定元素(remove(Object o))。以下是一个示例:

import java.util.Queue;
import java.util.LinkedList;public class Main {public static void main(String[] args) {// 创建一个新的队列Queue<String> queue = new LinkedList<>();// 向队列添加元素queue.add("元素1");queue.add("元素2");queue.add("元素3");// 出队操作,删除并返回队列的头部元素String removedElement = queue.remove();System.out.println("被删除的元素是:" + removedElement);System.out.println("队列中的元素是:" + queue);// 删除指定元素操作boolean isRemoved = queue.remove("元素2");System.out.println("是否删除成功:" + isRemoved);System.out.println("队列中的元素是:" + queue);}
}

在这个例子中,首先创建了一个队列并添加了一些元素。然后,使用 remove() 方法进行出队操作,这个方法会删除并返回队列的头部元素。接着,使用 remove(Object o) 方法来删除指定的元素。这个方法会尝试删除队列中的第一个出现的指定元素,并返回一个布尔值表示是否删除成功。

相关文章:

数据结构:队列

文章目录 队列一&#xff0c;概述二&#xff0c;添加数据三&#xff0c;删除数据 队列 一&#xff0c;概述 队列是一种特殊的数据结构&#xff0c;它遵循先进先出&#xff08;FIFO&#xff09;的原则。在队列中&#xff0c;元素被添加到末尾&#xff0c;并从头部移除。队列只…...

AUTOSAR汽车电子嵌入式编程精讲300篇-基于AUTOSAR架构的AT控制系统研究与实现

目录 前言 国内外研究现状 国外研究现状 国内研究现状 2 AUTOSAR规范及开发流程...

计网第五章(运输层)(四)(TCP的流量控制)

一、基本概念 流量控制就是指让发送方的发送速率不要太快&#xff0c;使得接收方来得及接收。可以使用滑动窗口机制在TCP连接上实现对发送方的流量控制。 注意&#xff1a;之前在讨论可靠传输时&#xff0c;讨论过选择重传协议和回退N帧协议都是基于滑动窗口的机制上进行实现…...

【华为OD机试python】查找众数及中位数【2023 B卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 众数是指一组数据中出现次数最多的那个数,众数可以是多个。 中位数是指把一组数据从小到大排序后,如果这组数据的总数是奇数, 那最中间的那个数就是中位数; 如果这组数据总数是偶数,那…...

阿里云无影云电脑详细介绍:价格、使用和功能优势说明

什么是阿里云无影云电脑&#xff1f;无影云电脑&#xff08;原云桌面&#xff09;是一种快速构建、高效管理桌面办公环境&#xff0c;无影云电脑可用于远程办公、多分支机构、安全OA、短期使用、专业制图等使用场景&#xff0c;阿里云百科分享无影云桌面的详细介绍、租用价格、…...

【实践篇】MySQL执行计划详解

文章目录 本文知识大纲速览1. 前言2. 基本介绍1. 什么是执行计划2. 如何查看执行计划3. 执行计划的组成部分 3. 执行计划的关键元素1. id2. select_type3. table:4. type:5. possible_keys:6. key:7. key_len8. ref:9. rows:10. Extra 4. 底层原理5. 执行计划示例解读本文知识图…...

二维凸包(Graham) 模板 + 详解

&#xff08;闲话&#xff09; 上了大学后没怎么搞oi&#xff0c;从土木跑路到通信了&#xff08;提桶开润大成功&#xff01;&#xff09;&#xff0c;但是一年上两年的课&#xff08;补的&#xff09;&#xff0c;保研也寄掉了&#xff08; 说起来自从博客被大学同学发现并…...

ElasticSearch(ES)简单介绍

ES简介 Elasticsearch&#xff08;通常简称为ES&#xff09;是一个开源的分布式搜索和分析引擎&#xff0c;旨在处理各种类型的数据&#xff0c;包括结构化、半结构化和非结构化数据。它最初是为全文搜索而设计的&#xff0c;但随着时间的推移&#xff0c;它已经演变成一个功能…...

OpenCV(三十五):凸包检测

1.凸包检测介绍 凸包检测是计算凸包的一种技术&#xff0c;凸包就是&#xff1a;给定二维平面上的点集&#xff0c;将最外层的点连接起来构成的凸边形&#xff0c;它是包含点集中所有的点。 2.凸包检测函数convexHull() void cv::convexHull ( InputArray points, OutputArra…...

PS 透视裁剪工具

上文 PS 裁剪工具及工具栏配置讲解 我们讲完了裁剪工具 然后 我们继续来研究 透视裁剪工具 切换到 透视裁剪工具 后 我们先点击左上方的清除 先不要这些多的配置 然后 我们可以先用鼠标在图像上 画出一个局域 然后 我们去拖他四个角中的其中一个 就能拖出一些不同的形状 然…...

每日一个C库函数-#1-memset()

每日一个C库函数-#1-memset() 来源 C 标准库 - <string.h> 声明 void *memset(void *str, int c, size_t n);str&#xff1a;要填充的内存块&#xff1b;c&#xff1a;要被设置的值&#xff08;以何值填充&#xff09;。该值以 int 形式传递&#xff0c;填充内存块时…...

GraphQL基础知识与Spring for GraphQL使用教程

文章目录 1、数据类型1.1、标量类型1.2. 高级数据类型 基本操作2、Spring for GraphQL实例2.1、项目目录2.2、数据库表2.3、GraphQL的schema.graphql2.4、Java代码 3、运行效果3.1、添加用户3.2、添加日志3.3、查询所有日志3.4、查询指定用户日志3.5、数据订阅 4、总结 GraphQL…...

【SA8295P 源码分析】97 - QNX AIS Camera 框架介绍 及 Camera 工作流程分析

【SA8295P 源码分析】97 - QNX AIS Camera 框架介绍 及 Camera 工作流程分析 一、QNX AIS Server 框架分析二、QNX Hypervisor / Android GVM 方案介绍三、Camera APP 调用流程分析四、QCarCam 状态转换过程介绍五、Camera 加串-解串 硬件链路分析六、摄像头初始化检测过程介绍…...

威胁的数量、复杂程度和扩散程度不断上升

Integrity360 宣布了针对所面临的网络安全威胁、数量以及事件响应挑战的独立研究结果。 数据盗窃、网络钓鱼、勒索软件和 APT 是最令人担忧的问题 这项调查于 2023 年 8 月 9 日至 14 日期间对 205 名 IT 安全决策者进行了调查&#xff0c;强调了他们的主要网络安全威胁和担忧…...

NSSCTF web 刷题记录2

文章目录 前言题目[广东强网杯 2021 团队组]love_Pokemon[NCTF 2018]Easy_Audit[安洵杯 2019]easy_web[NCTF 2018]全球最大交友网站prize_p2[羊城杯 2020]easyser[FBCTF 2019]rceservice方法一方法二 前言 今天是2023年9月13号&#xff0c;刷题记录2正式开始。时间来到九月十七…...

Linux驱动之INPUT子系统框架

目录 一、input 子系统简介 二、input 驱动编写流程 1、注册 input_dev 2、上报输入事件 三、input_event 结构体 按键、鼠标、键盘、触摸屏等都属于输入(input)设备&#xff0c; Linux 内核为此专门做了一个叫做 input子系统的框架来处理输入事件。输入设备本质上还是字符设…...

Long类型雪花算法ID返回前端后三位精度缺失问题解决

目录 一、问题描述二、问题复现1.Maven依赖2.application.yml 配置3.DemoController.java4.snowflakePage.html 页面5.DemoControllerAdvice.java 监听6.问题复现 三、原因分析四、问题解决方案一方案二 一、问题描述 Java 后端使用雪花算法生成 Long 类型的主键 ID&#xff0…...

6.8-SpringIoC之循环依赖底层源码解析

解决靠&#xff0c;三级缓存 创建Map&#xff0c;存不完整的Bean 存在问题&#xff1a;属性存在但没有值...

Springboot 实践(18)Nacos配置中心参数自动刷新测试

前文讲解了Nacos 2.2.3配置中心的服务端的下载安装&#xff0c;和springboot整合nacos的客户端。Springboot整合nacos关键在于使用的jar版本要匹配&#xff0c;文中使用版本如下&#xff1a; ☆ springboot版本: 2.1.5.RELEASE ☆ spring cloud版本 Greenwich.RELEASE ☆ sp…...

uniapp引入小程序原生插件

怎么在uniapp中使用微信小程序原生插件&#xff0c;以收钱吧支付插件为例 1、在manifest.json里的mp-weixin中增加插件配置 "mp-weixin" : {"appid" : "你的小程序appid","setting" : {"urlCheck" : false},"usingCom…...

自己记录微信小程序开发遇到的问题

在HBuilder X中【运行】--【小程序】--【运行设置】&#xff0c;小程序运行配置&#xff0c;将【微信开发者工具】的安装路径配置进去&#xff0c;首次运行会自动让你填写&#xff1b; 1、hbuildx运行到微信开发者工具报错 Error: Unbalanced delimiter found in string 错误…...

【leetcode 力扣刷题】栈—波兰式///逆波兰式相关知识和题目

波兰式、逆波兰式相关知识和题目 波兰式、逆波兰式介绍常规表达式转换成逆波兰式编程让常规表达式转换成逆波兰式逆波兰式运算过程常规表达式转换成波兰式编程让常规表达式转换成波兰式波兰式运算过程 150. 逆波兰式表达式求值224. 基本计算器227. 基本计算器Ⅱ282. 给表达式添…...

Web 第一步:HTTP 协议(基础)

这里是JavaWeb的开头部分&#xff01;那么先解释一下吧&#xff1a; Web&#xff1a;全球广域网&#xff0c;也称为万维网&#xff08;www&#xff09;&#xff0c;能够通过浏览器访问的网站。 JavaWeb&#xff1a;是用Java技术来解决相关 Web 互联网领域的技术栈。 &#xf…...

【Vue】快速入门案例与工作流程的讲解

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Vue快速入门》。&#x1f…...

LuatOS-SOC接口文档(air780E)--camera - codec - 多媒体-编解码

常量 常量 类型 解释 codec.MP3 number MP3格式 codec.WAV number WAV格式 codec.AMR number AMR-NB格式&#xff0c;一般意义上的AMR codec.AMR_WB number AMR-WB格式 codec.create(type, isDecoder) 创建编解码用的codec 参数 传入值类型 解释 int 多媒…...

《动手学深度学习 Pytorch版》 6.6 卷积神经网络

import torch from torch import nn from d2l import torch as d2l6.6.1 LeNet LetNet-5 由两个部分组成&#xff1a; - 卷积编码器&#xff1a;由两个卷积核组成。 - 全连接层稠密块&#xff1a;由三个全连接层组成。模型结构如下流程图&#xff08;每个卷积块由一个卷积层、…...

【微信小程序】项目初始化

| var() CSS 函数可以插入一个自定义属性&#xff08;有时也被称为“CSS 变量”&#xff09;的值&#xff0c;用来代替非自定义 属性中值的任何部分。 1.初始化样式与颜色 view,text{box-sizing: border-box; } page{--themColor:#ad905c;--globalColor:#18191b;--focusColor…...

C#,《小白学程序》第二十六课:大数乘法(BigInteger Multiply)的Toom-Cook 3算法及源程序

凑数的&#xff0c;仅供参考。 1 文本格式 /// <summary> /// 《小白学程序》第二十六课&#xff1a;大数&#xff08;BigInteger&#xff09;的Toom-Cook 3乘法 /// Toom-Cook 3-Way Multiplication /// </summary> /// <param name"a"></par…...

destoon自定义一个archiver内容文档

在archiver目录建立以下代码&#xff1a; <?php define(DT_REWRITE, true); require ../common.inc.php; $EXT[archiver_enable] or dheader(DT_PATH); //$DT_BOT or dheader(DT_PATH); $N $M $T array(); $mid or $mid 5; $vmid $list 0; foreach($MODULE as $k>…...

5-1 Dataset和DataLoader

Pytorch通常使用Dataset和DataLoader这两个工具类来构建数据管道。 Dataset定义了数据集的内容&#xff0c;它相当于一个类似列表的数据结构&#xff0c;具有确定的长度&#xff0c;能够用索引获取数据集中的元素。 而DataLoader定义了按batch加载数据集的方法&#xff0c;它是…...

农特产品网站建设合同模板/东莞百度seo

断路器 照明&#xff1a;1P 16A&#xff0c;约承受3520W功率&#xff0c;占一位&#xff1b;插座&#xff1a;1P 16A&#xff0c;约承受3520W功率&#xff0c;占一位&#xff1b;厨房、卫生间各一路&#xff1a;25A&#xff08;带漏电保护&#xff09;&#xff0c;约承受5500W…...

今日油价92汽油下调/桂林seo顾问

#include <stdio.h>#include <math.h>int main(){ /*一个整数&#xff0c;加上100后是一个 完全平方数&#xff0c;再加上168后也是 一个完全平方数,求该数是多少*/ long int i,x,y; for (i1;i<100000;i) { xsqrt(i100); …...

专门做av字幕的网站/seo网站培训优化怎么做

前言&#xff1a;在前面一些文章中&#xff0c;经常能看到介绍某某参数的作用&#xff0c;可能有些小伙伴仍搞不清楚 MySQL 参数是啥。本篇文章我们来聊聊 MySQL 参数&#xff0c;学习下如何管理维护 MySQL 参数。1.MySQL参数概念我们所说的参数在官方文档中称为 系统变量(syst…...

免费新闻网站建设/百度推广运营怎么做

180万私域用户&#xff0c;每天贡献直接单量3.5万多杯&#xff0c;通过群内信息提醒促单10万多杯 达到这一目标用时仅3个月&#xff0c;其中60%以上都是活跃用户 用户入群后月消费频次提升30%&#xff0c;周复购人数提升28%&#xff0c;MAU提升10% 目前&#xff0c;私域订单贡献…...

商务网站的功能和建设/个人外包接单平台

目录 一、前言 二、Git Bash 三、统计信息 1.统计某项目中成员数量 2.统计所有用户的提交总次数 3.统计所有用户指定时间段的提交次数 4.按用户名统计提交次数 完整脚本如下 一、前言 项目中有很多成员&#xff0c;如何查看各个时间段每个组员的代码提交量&#xff0c;下…...

c 做网站好嘛/百度导航最新版本免费下载

http://codeforces.com/problemset/status debug了好久的一份代码。思路简单就是模拟&#xff0c;昨天晚上写的时候脑子短路&#xff0c;写错一个地方然后就不好改了&#xff0c;错误的样例正好还是“IQ0”仿佛在嘲讽着什么hhh,以后可长点心⑧ #include<iostream> #inc…...