Java 数据结构与算法系列精讲之队列
作者:我是小白呀 发布时间:2023-09-26 21:10:31
标签:Java,队列,数据结构
概述
从今天开始, 小白我将带大家开启 Jave 数据结构 & 算法的新篇章.
队列
队列 (Queue) 遵循先进先出的原则 (First-In-First-Out). 举个例子, 早上我们排队买早餐的时候, 先排的人先买后排的人后买.
队列只能在队首进行删除操作, 在队尾进行插入操作.
队列实现
enqueue 方法
// 入队
public void enqueue(E element) {
array.add(array.size(), element);
}
dequeue 方法
// 出队
public E dequeue() {
E element = array.get(0);
array.remove(0);
return element;
}
main
public static void main(String[] args) {
// 创建队列
Queue<Integer> queue = new Queue<>();
// 存入5个元素
for (int i = 0; i < 5; i++) {
queue.enqueue(i);
System.out.println(queue);
}
// 取出5个元素
for (int i = 0; i < 5; i++) {
queue.dequeue();
System.out.println(queue);
}
}
输出结果:
Queue{array=[0]}
Queue{array=[0, 1]}
Queue{array=[0, 1, 2]}
Queue{array=[0, 1, 2, 3]}
Queue{array=[0, 1, 2, 3, 4]}
Queue{array=[1, 2, 3, 4]}
Queue{array=[2, 3, 4]}
Queue{array=[3, 4]}
Queue{array=[4]}
Queue{array=[]}
完整代码
import java.util.ArrayList;
public class Queue<E> {
private ArrayList<E> array;
// 无参构造
public Queue() {
array = new ArrayList<>(10);
}
// 有参构造
public Queue(int capacity) {
array = new ArrayList<>(capacity);
}
// 入队
public void enqueue(E element) {
array.add(array.size(), element);
}
// 出队
public E dequeue() {
E element = array.get(0);
array.remove(0);
return element;
}
// 队列是否为空
public boolean isEmpty() {
return array.isEmpty();
}
// 队列长度
public int getSize() {
return array.size();
}
// toString
@Override
public String toString() {
return "Queue{" +
"array=" + array +
'}';
}
public static void main(String[] args) {
// 创建队列
Queue<Integer> queue = new Queue<>();
// 存入5个元素
for (int i = 0; i < 5; i++) {
queue.enqueue(i);
System.out.println(queue);
}
// 取出5个元素
for (int i = 0; i < 5; i++) {
queue.dequeue();
System.out.println(queue);
}
}
}
来源:https://iamarookie.blog.csdn.net/article/details/121850989


猜你喜欢
- 本文实例讲述了C#中Memcached缓存的用法,分享给大家供大家参考。具体方法如下:ICacheStrategy.cs文件如下:publi
- 先给出具体代码(当前目录为:D:\pro):package org.test;public class TestJava{ pu
- 展示图: 对接的完整流程如下首先是配置gzh.appid=公众号appidwxPay.mchId=商户号wxPay.key=支付密
- 一、概述项目中经常用到倒计时的功能,比如说限时抢购,手机获取验证码等等。而google官方也帮我们封装好了一个类:CountDownTime
- 前言本问主要介绍DataBinding在Android App中的使用方法。数据绑定是将“提供器”的数据源与“消费者”绑定并使其同步的一种通
- 本文实例为大家分享了android水平循环滚动控件的具体代码,供大家参考,具体内容如下CycleScrollView.javapackage
- 一、搭建步骤1、导入jar包、创建项目包结构2、在web.xml中配置前端控制器3、编写springMvc核心配置文件4、编写pojo类和C
- C#是一种类型安全的编程语言(所有表达式都能解析成某个类型的实例,在编译器生成的代码中,只会执行对这个类型有效的操作),和非类型安全的语言相
- 前言解释:之前用的ScreenToGif录屏,因为上传的.gif最大不超过5MB,所以做了不少删帧和色彩弱化等处理,这才导致色彩看上去不是很
- 前言MyBatis提供了9种动态SQL标签:trim、where、set、foreach、if、choose、when、otherwise、
- 类和类有关联,将查询的结果注入到对象和对象的关联关系中Mybatis处理的关联关系 包括一对一关联 和 一对多关联 ,例如学生关联班级是一对
- xUtils简介xUtils 包含了很多实用的android工具。xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),
- 重写子pagerview的dispatchTouchEvent方法,在返回前添加一句getParent().requestDisallowI
- ASP.NET为开发人员提供了一套简单实用的服务器控件来验证用户输入的信息是否有效。这些控件的主要属性有id(控件的唯一id)、Contro
- 昨天,我同学用Eclipse安装Aptana插件,她弄了一天都没安装起,最后找了我。 然后我也按照她的那个方法安装,结果一样,安装不成功!网
- 我们在应用中经常看到一些选择开关状态的配置文件,做项目的时候用的是android的Switch控件,但是感觉好丑的样子子个人认为还是自定义的
- cookie和session的比较一、对于cookie:①cookie是创建于服务器端②cookie保存在浏览器端③cookie的生命周期可
- 前述园子里有许多人对log4net这款开源的日志记录控件有很多介绍。在这里个人再做一次总结,希望对以后有所帮助,需要的时候可以直接使用,减少
- 1、在Android studio中进行打开一个项目的文件之后,然后进行点击Android stuio中菜单中的“tools”的选项。在弹出
- 高效检索海量信息(经典查找算法)是现代信息世界的基础设施。我们使用符号表描述一张抽象的表格,将信息(值)存储在其中,然后按照指定的键来搜索并