当前位置: 首页 > 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) 方法来删除指定的元素。这个方法会尝试删除队列中的第一个出现的指定元素,并返回一个布尔值表示是否删除成功。

http://www.lryc.cn/news/169156.html

相关文章:

  • AUTOSAR汽车电子嵌入式编程精讲300篇-基于AUTOSAR架构的AT控制系统研究与实现
  • 计网第五章(运输层)(四)(TCP的流量控制)
  • 【华为OD机试python】查找众数及中位数【2023 B卷|100分】
  • 阿里云无影云电脑详细介绍:价格、使用和功能优势说明
  • 【实践篇】MySQL执行计划详解
  • 二维凸包(Graham) 模板 + 详解
  • ElasticSearch(ES)简单介绍
  • OpenCV(三十五):凸包检测
  • PS 透视裁剪工具
  • 每日一个C库函数-#1-memset()
  • GraphQL基础知识与Spring for GraphQL使用教程
  • 【SA8295P 源码分析】97 - QNX AIS Camera 框架介绍 及 Camera 工作流程分析
  • 威胁的数量、复杂程度和扩散程度不断上升
  • NSSCTF web 刷题记录2
  • Linux驱动之INPUT子系统框架
  • Long类型雪花算法ID返回前端后三位精度缺失问题解决
  • 6.8-SpringIoC之循环依赖底层源码解析
  • Springboot 实践(18)Nacos配置中心参数自动刷新测试
  • uniapp引入小程序原生插件
  • 自己记录微信小程序开发遇到的问题
  • 【leetcode 力扣刷题】栈—波兰式///逆波兰式相关知识和题目
  • Web 第一步:HTTP 协议(基础)
  • 【Vue】快速入门案例与工作流程的讲解
  • LuatOS-SOC接口文档(air780E)--camera - codec - 多媒体-编解码
  • 《动手学深度学习 Pytorch版》 6.6 卷积神经网络
  • 【微信小程序】项目初始化
  • C#,《小白学程序》第二十六课:大数乘法(BigInteger Multiply)的Toom-Cook 3算法及源程序
  • destoon自定义一个archiver内容文档
  • 5-1 Dataset和DataLoader
  • IDEA创建完Maven工程后,右下角一直显示正在下载Maven插件