Java实现队列

从零开始学嵌入式之STM32——1.什么是STM32 它是ST公司推出的一系列单片机的统称。ST----指的是ST公司----意法半导体。意法半导体,成立于1987年,是由意大利的SGS微电子公司和法国的Thomson半导体公司合并而成。ARM目前主要是ARM架构处理器及外围组件的电路设计方案,知识产权授权的形式收取费用,其他公司根据ARM的方案设计出CPU产品。,它以应用为核心,软硬件可裁剪,旨在实现对设备的控制、监测或辅助功能,区别于通用计算机(如 PC、服务器)的 “一机多用” 属性。在嵌入式领域,目前主流的是cortex-M3内核推出的芯片。 阅读详情

简介

  队列是一种特殊的 线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。
  在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。
  队列空的条件:front=rear
  队列满的条件: rear = MAXSIZE

队列的数组实现

  队列可以用数组Q[1…m]来存储,数组的上界m即是队列所容许的最大容量。在队列的运算中需设两个指针:head,队头指针,指向实际队头元素的前一个位置;tail,队尾指针,指向实际队尾元素所在的位置。一般情况下,两个指针的初值设为0,这时队列为空,没有元素。数组定义Q[1…10]。Q(i) i=3,4,5,6,7,8头指针head=2,尾指针tail=8。队列中拥有的元素个数为:L=tail-head现要让排头的元素出队,则需将头指针加1。即head=head+1这时头指针向上移动一个位置,指向Q(3),表示Q(3)已出队。如果想让一个新元素入队,则需尾指针向上移动一个位置。即tail=tail+1这时Q(9)入队。当队尾已经处理在最上面时,即tail=10,如果还要执行入队操作,则要发生"上溢",但实际上队列中还有三个空位置,所以这种溢出称为" 假溢出"。
  克服假溢出的方法有两种。一种是将队列中的所有元素均向低地址区移动,显然这种方法是很浪费时间的;另一种方法是将数组存储区看成是一个首尾相接的环形区域。当存放到n地址后,下一个地址就"翻转"为1。在结构上采用这种技巧来存储的队列称为 循环队列。
  队列和栈一样只允许在断点处插入和删除元素。
  循环队的入队算法如下:
  1、tail=tail+1;
  2、若tail=n+1,则tail=1;
  3、若head=tail尾指针与头指针重合了,表示元素已装满队列,则作上溢出错处理;
  4、否则,Q(tail)=X,结束(X为新入出元素)。
  队列和栈一样,有着非常广泛的应用。
  注意:(1)有时候队列中还会设置表头结点,就是在对头的前面还有一个结点,这个结点的数据域为空,但是指针域指向对头元素。
  (2)另外,上面的计算还可以利用下面给出的公式cq.rear=(cq.front+1)/max;
  当有表头结点时,公式变为cq.rear=(cq.front+1)/(max+1)。

队列的链表实现

  在队列的形成过程中,可以利用线性链表的原理,来生成一个队列。
  基于链表的队列,要动态创建和删除节点,效率较低,但是可以动态增长。
  队列采用的FIFO(first in first out),新元素(等待进入队列的元素)总是被插入到链表的尾部,而读取的时候总是从链表的头部开始读取。每次读取一个元素,释放一个元素。所谓的动态创建,动态释放。因而也不存在溢出等问题。由于链表由结构体间接而成,遍历也方便。

队列的基本运算

  (1)初始化队列 Qini (Q)
  (2)入队 QADD(Q,X) (3)出队 QDel(Q,X)
  (4)判断队列是否为空 qempty(Q)
  (5)判断队列是否为满qfull(Q)
  
操作 类型 作用 返回值 例子
length(s) 函数 求字符串s的长度 整型 s:='123456789'; 
l:=length(s);{l的值为9}
copy(s,w,k) 函数 复制s中从w开始的k位 字符串 s:='123456789'; 
s1:=copy(s,3,5);{s1的值是'34567'}
val(s,k,code) 过程 将字符串s转为数值,存在k中;code是错误代码 ​ var s:string;k,code:integer; 
begin 
s:='1234'; 
val(s,k,code); 
write(k);{k=1234}
str(i,s) 过程 将数值i转为字符串s ​ i:=1234; 
str(i,s); 
write(s);{s='1234'}
Delete(s,w,k) 过程 在s中删除从第w位开始的k个字符 ​ s := 'Honest Abe Lincoln'; 
Delete(s,8,4); 
Writeln(s); { 'Honest Lincoln' }
Insert(s1, S, w) 过程 将s1插到s中第w位 ​ S := 'Honest Lincoln'; 
Insert('Abe ', S, 8); { 'Honest Abe Lincoln' }
Pos(c, S) 函数 求字符c在s中的位置 整型 S := ' 123.5'; 
i :=Pos(' ', S);{i的值为1}
+ 运算符 将两个字符串连接起来 ​ s1:='1234'; 
s2:='5678'; 
s:=s1+s2;{'12345678'}

 在STL中,对队列的使用很是较完美

 

 

 

java 实现队列:

 

import java.util.LinkedList;

public class MyQueue
{
 private LinkedList list = new LinkedList();
 
 public void put(Object o)
 {
  list.addLast(o);
 }
 
 public Object get()
 {
  return list.removeFirst();
 }
 
 public boolean isEmpty()
 {
  return list.isEmpty();
 }
 
 public static void main(String[] args)
 {
  MyQueue myQueue = new MyQueue();
  
  myQueue.put("one");
  myQueue.put("two");
  myQueue.put("three");
  
  System.out.println(myQueue.get());
  System.out.println(myQueue.get());
  System.out.println(myQueue.get());
  
  System.out.println(myQueue.isEmpty());
   
 }
  
}

 

20、啁啾脉冲光纤放大器:原理、设计与仿真 本文详细介绍了啁啾脉冲光纤放大器(FCPA)的原理、设计与仿真过程。内容涵盖CPA技术的基本原理、光纤基CPA系统的组成、Tm掺杂光纤放大器的工作机制、全光纤脉冲展宽器的设计以及仿真分析。通过MATLAB仿真展示了脉冲在光纤中的展宽与放大过程,并讨论了如何优化系统以减少非线性失真、控制峰值功率并提高整体性能。文章还总结了系统优化的关键策略,并展望了未来的发展方向。 阅读详情

相关推荐

在overleaf中使用bibtex引用参考文献

最近在挑选写tex的平台,挑来挑去,个人感觉overleaf给我带来的体验感是最舒适的。不过由于对内部的文件组织和make进行了一层封装,所以与一般的本地平台编译tex会有一点不同。此处写一下在overleaf中使用bibtex的方法。 在tex中使用bibtex引用文献是一件很舒适的事,毕竟这是tex的优点之一(要是tex比word难用,我干什么不去用word,hhh) 第一步,我们创建一个.bib文件,名字随便起,我这边起为reference.bib。 然后打开谷歌学术,搜索你想要引用的文章,并找到

锦恢的博客 4万+

How to resolve java.lang.ClassNotFoundException in Java

ClassNotFoundException is one of java nightmare everybody face in there day to day life.this is one error which occurs by and now and chew up of your precious time while finding and fixing cause of

Fred Lee的程序人生 4096

从零构建NVENC编码器:一个游戏开发者的实战手册

本文详细介绍了如何从零构建NVENC编码器,特别针对游戏开发者提供实战指南。内容涵盖NVENC基础概念、DirectX纹理捕获、异步编码优化及高级特性配置,帮助开发者高效集成硬件编码技术到游戏引擎中,实现高性能游戏录制和直播功能。重点解析了NVIDIA专用编码芯片的优势与API使用技巧。

weixin_29292431的博客 365

java队列返回队尾元素_Java 集合深入理解(9):Queue 队列

今天心情不太好,来学一下 List 吧!什么是队列队列是数据结构中比较重要的一种类型,它支持 FIFO,尾部添加、头部删除(先进队列的元素先出队列),跟我们生活中的排队类似。队列有两种:单队列循环队列单队列就是常见的队列, 每次添加元素时,都是添加到队尾:以数组实现的队列为例,初始时队列长度固定为 4,font 和 rear 均为 0:每添加一个元素,rear 后移一位。当添加四个元素后, rea...

weixin_36330260的博客 2821

NBU计算机大二下期末

计算机网络 任课老师:JG (放了一学期的他自己的视频和上了一学期网课没什么区别,甚至不如上网课。。。) 考试题型 填空题10*1 判断题10*1 选择题30*1 简答和计算题30(4题) 讨论题20 强烈建议不要再这门课上花太多时间复习,不然有复习了个寂寞的感觉。。。计网是一页开卷的,一页开卷纸不用写太多,第一他不会考太详细;第二反正最后都要被收走。 填空题、判断题基本看懂了英文就能做的差不多;选择题去网上找点英文题多刷一下问题不大;简答题把书上每章根据他上课的内容在开卷纸上抄下就好,今年是解释check

weixin_45816954的博客 710

【项目实战】基于STM32单片机的智能小车设计(有代码)

【1】背景意义 近些年随着国民生活水平的提升,以小车为载体的轮式机器人进入了我们的生活,尤其是在一些布线复杂困难的安全生活区和需要监控的施工作业场合都必须依赖轮式机器人的视频监控技术。因此,基于嵌入式技术的无线通信视频监控轮式机器人应运而生。由于它们与人类工作相比具有成本低廉、安全稳定的优点,目前已经在许多危险作业以及工业场合得到了广泛应用而且轮式机器人不需要像人那样采取过多的保护措施,因此轮式机...

ShawnWang1994的博客 13万+

java 实现数据结构之队列

队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,只允许在表的后端(rear)进行插入操作。 1.队列的顺序存储结构及实现 Java代码   public class SequenceQueue  {      private int DEFAULT_SIZE = 10;      //保存数组的长度。      private int capacity;

phantomes的专栏 802

运行stable-diffusion出现的问题

解决:即用 https://github.com/CompVis/taming-transformers/blob/master/taming/modules/vqvae/quantize.py 新文件,替换错误提示文件中的全部内容即可。5.新建文件夹 CompVis/stable-diffusion-safety-checker/将下载的四个文件放入 解决!后面还会遇到'openai/clip-vit-large-patch14离线下载的问题,同样步骤解决。解决:下载后离线,步骤如下。

weixin_52121118的博客 2348

【数据结构】队列(队列的出入,有效元素,判空,获取队头,队尾元素)

//队列的声明 #pragma once typedef int QDataType; typedef struct QNode{ struct QNode* next; QDataType val; }QNode; typedef struct Queue{ struct QNode* head; struct QNode* rear; QDataT...

金金金金金的博客 6433

【WRF湿度调整策略】WRF/ERA5湿度数据对比

【WRF湿度调整策略】WRF/ERA5湿度数据对比

WW、forever的博客 120

【QNX Hypervisor 2.2 用户手册】2.6 处理qvm终止

你可以注册通知,以在qvm进程实例退出时得到通知。这样你就可以采取相应的措施来响应这种终止事件。

从0到1,突破自己 1106

java队列——queue详细分析

Queue: 基本上,一个队列就是一个先入先出(FIFO)的数据结构 Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Deque接 口。 Queue的实现 1、没有实现的阻塞接口的LinkedList: 实现了java.util.Queue接口和java.util.AbstractQueue接口  内置的不阻塞队列: Pri...

weixin_30443895的博客 6948

第1章 环境准备

本章是 Kubernetes 高可用集群部署的前置基础环境配置,所有节点必须严格按顺序执行。主要内容包括:节点规划(IP、角色、配置要求)、VMware 克隆节点环境清理(解决 MAC 地址和主机名冲突)、统一工作目录创建、主机名与 hosts 解析配置、系统基础升级、防火墙与 swap 关闭、内核模块加载(overlay、br_netfilter、ip_vs)、网络参数优化(IP 转发、桥接过滤)、时间同步配置等。Ubuntu 24.04 内核 6.8+ 原生支持 eBPF 和 IPVS,无需手动升级内核

幸福街--linux技术分享 210

java队列实现(顺序队列、链式队列、循环队列)

1.顺序队列的实现 package lang; import java.io.Serializable; import java.util.Arrays; /** * @ClassName: ArrayQueue * @Description: 顺序队列 * @date 2014年1月20日 下午3:46:19 * @param */ public clas

jiutianhe的专栏 4万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Java实现循环队列、栈实现队列、队列实现栈

本文介绍了队列的两种实现方式:循环队列和链式队列。循环队列通过数组实现,利用取模运算解决假溢出问题,包含入队、出队等基本操作。链式队列基于双向链表实现,具有灵活的内存管理特性。此外,文章还展示了如何用栈实现队列(通过两个栈反转元素顺序)以及用队列实现栈(借助辅助队列保留栈顶元素)。这些实现方式各具特点,体现了数据结构间的相互转换思想,为不同场景下的应用提供了灵活选择。

mingxunwwww的博客 1013

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

JAVA实现队列类

和栈一样,队列也是线性的集合。对于队列来说,插入限制在一端,也就是队尾,删除限制在另一端,也就是对头。队列支持先进先出的协议。 本文使用java中的数据和列表来实现队列类,从而更加详细和直观的理解队列的使用和性质。 1、使用数组实现队列 public class QueueWithArray { private int [] queueArray; private int front ...

qq_38375282的博客 2965

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

java实现队列_java实现队列

队列的定义队列的特点是节点的排队次序和出队次序按入队时间先后确定,即先入队者先出队,后入队者后出队。即我们常说的FIFO(first in first out)先进先出。顺序队列定义及相关操作顺序存储结构存储的队列称为顺序队列,内部使用一个一维数组存储,用一个队头指针front指向队列头部节点(即使用int类型front来表示队头元素的下标),用一个队尾指针rear,指向队列尾部元素(int类型r...

weixin_39633165的博客 737

用java实现队列

2.2简单队列 对列是一种有序列表,可以通过数组或者是链表来实现。 队列遵循着先入先出的原则(FIFO) 在队列里,我们常常用front来表示队列开头的元素,rear来表示队列最后一个元素。 rear会随着输入而变化,front会随着输出而变化。 2.2.1.思路分析 当我们将数据存入队列时称为”addQueue",addQueue的处理需要有两个步聚:思路分析 将尾指针往后移: rear+1,当front == rear 【空】 若尾指针rear小于队列的最大下标maxSize-1,则将数据存入rear

abaidaye的博客 1212

Java栈和队列的实现

Java栈和队列的实现

2301_80288511的博客 897

java队列实现

个人理解:   java中队列的数组实现,入队在数组尾部添加,出队删除并返回数组首元素,其他元素位置前进1位,获取获取队尾元素。   队列的“linkedList”实现采用双栈min、mout,入队时候从mout倒入min然后把元素入栈min,出队从min倒入mout元素从mout出栈。 转载请注明出处:http://www.cnblogs.com/skywang12345...

a662852186的博客 270

Java之数组实现队列

使用数组实现顺序队列、环形队列,包括队列的介绍、思路分析、示意图和代码实现。

zavier的乌托邦 449

队列之Java实现循环队列

什么是队列?队列(queue)又叫先进先出表,它是一种运算受限的线性表。其限制是只允许在表的一端进行插入数据和另一端取数据。插入数据的一端是队尾,取数据的一端是队头。队列的数据结构:数组或者链表实现队列的常用场景:生产者生产数据放入队列缓存,消费者去消费数据。

Shen_Dong的博客 1611

Java用ArrayList实现队列

发布文章测试

Java程序猿1只 2600

用栈实现队列 && 队列实现栈(Java)

思路:最新来的一定要在出栈口(一个个叠加),用que2作为存放新来的队列。解释:每次push新元素时,都将其放入一个空队列,然后将另一个队列的所有元素转移到这个队列中,最后交换两个队列的引用。基本思路:使用两个栈(输入栈和输出栈共同完成一个队列),保证把进栈数据全部导入到输出栈(注意是全部导入)。写博客的目的是每日督促并记录刷题,也欢迎大家批评指正~(day12)注意:在push方法里就要随时进行这种变化。注意:将相近功能的代码抽象出来。

m0_72833525的博客 782

Java中循环队列实现_Java循环队列的实现方法

Java循环队列的实现方法时间:2017-09-13来源:华清远见JAVA学院生活中有很多队列的影子,比如打饭排队,买火车票排队问题等,可以说与时间相关的问题,一般都会涉及到队列问题。那么Java如何实现循环队列呢?今天华清Java学院小编就以Java如何用数组实现循环队列为例,和大家分享一下Java循环队列的实现方法。Java循环队列的实现代码如下:1、队列的类class CirQue...

weixin_31459297的博客 2251

Java实现栈与队列

本文详细介绍了Java中栈和队列这两种数据结构的实现原理与应用场景。文章首先讲解了栈的后进先出(LIFO)特性,通过数组和链表两种方式实现栈结构,并分析了栈在递归转循环、括号匹配、逆波兰表达式等场景的应用。随后介绍了队列的先进先出(FIFO)特性及其实现方式,重点讨论了循环队列和双端队列这两种特殊队列的实现原理。最后通过LeetCode题目示例,展示了如何用队列实现栈和用栈实现队列的相互转换方法,提供了完整的代码实现。全文通过理论讲解与代码实践相结合的方式,帮助读者深入理解这两种基础数据结构的特点与应用。

su17643217590的博客 6737
上一篇: 栈
下一篇: HttpServletRequest 实现通过表单收集客户机数据
info_
博客等级 码龄14年 1粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值