数据结构之队列(java)

Java - 数据结构,队列 普通队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(FirstIn First Out) 入队列:进行插入操作的一端称为队尾(Tail/Rear) 出队列:进行删除操作的一端称为队头(Head/Front)双端队列:可以在对头或者队尾进行插入或者删除操作。普通队列和双端队列从上面知道双向列表可以当普通队列使用,也可以当双端队列使用,也可以当栈使用。 阅读详情

队列

先进先出 FIFO,在非空队列中,队首指针指向队头元素,队尾指针指向队尾元素的下一个位置。

顺序队列中的假溢出现象:(front:头指针,rear:尾指针)

循环队列:

循环队列充分利用了系统分配的空间,克服了“假溢出”现象。方法:将队列看成是一个首尾相接的圆环。

约定:rear所指的位置始终为空

队列为空时:front == rear;

队列满时:(rear+1) % size == front;(size:队列的空间大小)

class CQue{
	//循环队列
	
	private int size = 5;
	private int[] array;
	int front,rear;
	
	public CQue() {
		array = new int[this.size];
		front = rear =0;
	}
	
	/**
	 * 入队
	 * @param data
	 * @throws Exception 
	 */
	public int insert(int data) throws Exception {
		if (isFull()) {
			throw new Exception("queue is full !");
		}
		this.array[rear] = data;
		this.rear = (this.rear+1)%this.size;//移动队尾指针
		return this.rear;//返回队尾指针的位置
	}
	
	/**
	 * 出队
	 * @return 
	 * @throws Exception 
	 */
	public int remove() throws Exception {
		if (isEmpty()) {
			throw new Exception("queue is empty !");
		}
		int data =array[front]; //获取队首元素
		this.front = (this.front+1)%this.size;//移动队首指针
		return data;
		
	}
	
	/**
	 * 判断是否为空
	 * @return
	 */
	public boolean isEmpty() {
		return this.front == this.rear;
	}
	
	/**
	 * 判断队列是否满了
	 * @return
	 */
	public boolean isFull() {
		return ((this.rear + 1) % this.size) == this.front;
	}
	
	public int getSize() {
		return size;
	}
	public void setSize(int size) {
		this.size = size;
	}	
}

public class MyQueue {

	public static void main(String[] args) throws Exception {
		CQue queue = new CQue();
		System.out.println(queue.getSize() + "--"+queue.isEmpty() +"--"+queue.isFull());
		System.out.println(queue.insert(0));
		System.out.println(queue.insert(1));
		System.out.println(queue.insert(2));
		System.out.println(queue.insert(3));
		System.out.println(queue.isFull());
		//queue.insert(4);
		//System.out.println(queue.isFull());
		System.out.println(queue.remove());
		System.out.println(queue.remove());
		System.out.println(queue.remove());
		System.out.println(queue.remove());
		System.out.println(queue.remove());

	}

}


 

把 sy-* 带进 ABAP CDS:ABAP 7.50 里的环境信息新姿势($session 与 @Environment.systemField 实战) 摘要:ABAP 7.50在CDS视图中引入两种获取环境信息的方式:1)直接使用$session会话变量读取用户、客户端和系统语言;2)通过@Environment.systemField注解参数,由Open SQL自动注入系统字段。$session方式简单但依赖Open SQL访问路径,非ABAP环境下可能失效;注解参数方案更工程化,依赖关系明确且支持测试。建议ABAP体系内优先使用$session,对外接口采用参数化方案。两种方式各有适用场景,正确选择可避免潜在风险。(148字) 阅读详情

相关推荐

ETL数据集成案例

一个典型的ETL数据集成案例是将多个来源的数据合并成一个数据集。假设有一个公司,该公司使用一些不同的系统来存储不同部门的数据,例如销售数据存储在一个CRM系统中,财务数据存储在一个ERP系统中,人力资源数据存储在一个HR系统中。为了更好地进行报告和分析,该公司决定将所有这些数据集成到一个数据仓库中。以下是实现这一目标的ETL过程的步骤:提取(Extract):首先,需要从每个系统中提取所需的数据。每个系统可能有不同的数据格式和结构,因此需要编写不同的提取程序或查询来提取数据。

runqu的博客 948

java队列取值_详细讲解java数据结构(栈、队列、链表、红黑树等等)

1. 数据结构1.1 栈(stack)栈(stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈顶(top)。它是后进先出(LIFO)的。对栈的基本操作只有 push(进栈)和 pop(出栈)两种,前者相当于插入,后者相当于删除最后的元素。1.2. 队列(queue)队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进...

weixin_42347882的博客 794

BQ27220燃料计量芯片与Arduino库kode_bq27220实战指南

燃料计量(Fuel Gauge)是嵌入式电池管理系统的核心技术,通过电压、电流、温度多维建模实现荷电状态(SOC)与健康状态(SOH)的动态估算。其原理基于电化学阻抗补偿算法(如CEDV),区别于简单电压查表法,具备自学习与老化适应能力。该技术显著提升便携设备续航预测精度与低功耗可靠性,广泛应用于TWS耳机、可穿戴设备及医疗电子等场景。本文围绕TI BQ27220高精度燃料计量IC及其配套Arduino库kode_bq27220展开,覆盖硬件连接规范、I²C初始化要点、SOC/SOH实时读取、EDV阈值配置

weixin_35671843的博客 331

用接口实现队列的末尾和指定位置的插入,删除,指定位置元素查询

/** * 定义一个接口类(定义数组的增加,删除,按下标查询,返回队列长度)的方法  */package 队列增删改查; public interface IFunction {    //向队列中加入一个元素 public void add(String s) ;   //删除数组中指定下标的元素 public void delete(int index);  //将元素插入到指定的位置 ...

MN唐Ms 1821

H桥电路原理

一、H桥原理 图1中所示为一个典型的直流电机控制电路。电路得名于“H桥式驱动电路”是因为它的形状酷似字母H。4个三极管组成H的4条垂直腿,而电机就是H中的横杠(注意:图1及随后的两个图都只是示意图,而不是完整的电路图,其中三极管的驱动电路没有画出来)。   如图所示,H桥式电机驱动电路包括4个三极管和一个电机。要使电机运转,必须导通对角线上的一对三极管。根据不同三极管对的导通情况,电流可能会从左...

Loadingzc的专栏 7万+

图神经网络实战(5)——常用图数据集

Cora 和 Facebook Page-Page 是图神经网络领域中经常使用的两个基准图数据集,通常用来比较不同模型的性能。在本节中,介绍了如何使用 PyTorch Geometric 库提供的数据集类加载 Cora 和 Facebook Page-Page 数据集,并探索了两个数据集的主要特征。

盼小辉丶的博客 1万+

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

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

weixin_28339967的博客 4179

【数字IC验证进阶】正则表达式(Regular Expression)快速入门指南

在芯片开发过程中,正则表达式的使用非常常见。初次上手晦涩难懂,多用几次爱不释手!

悟已往之不谏 知来者之可追 1440

Java 集合深入理解(9):Queue 队列

点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 今天心情不太好,来学一下 List 吧! 什么是队列 队列是数据结构中比较重要的一种类型,它支持 FIFO,尾部添加、头部删除(先进队列的元素先出队列),跟我们生活中的排队类似。 队列有两种: 单队列 循环队列 单队列就是常见的队列, 每次添加元素时,都是添...

weixin_33972649的博客 1636

用MATLAB计算卡方值

然后,我们计算了期望频数,即在两个分类变量独立的情况下,每个单元格的预期频数。接下来,我们使用卡方检验的公式计算了卡方值。卡方检验是一种常用的统计方法,用于确定两个分类变量之间是否存在相关性。它基于观察到的频数和期望频数之间的差异来评估分类变量之间的独立性。在MATLAB中,我们可以使用。请注意,这只是一个简单的示例代码,用于说明如何使用MATLAB计算卡方值。在实际应用中,您可能需要根据您的具体数据和研究问题进行相应的修改和调整。在上面的代码中,我们首先创建了两个分类变量。函数显示了计算得到的卡方值。

CodeNexus的博客 2658

Qt EGLFS 图形后端详解

EGLFS (EGL Full Screen) 是Qt框架在嵌入式Linux系统中的高性能图形显示后端,它提供了直接基于EGL和OpenGL ES的硬件加速渲染解决方案。

浩瀚之水的专栏 511

Java数据结构之队列

基本概念 队列是一种特殊的线性表,其插入操作只能在表的尾部进行,叫入队,这一端被称为队尾,删除操作只能在表的头部进行,叫出队,这一端被称为队首。没有数据元素的队列称为空队列。队列具有FIFO(先进先出)的特点,队列的底层数据结构可以用数组来实现。 队列的抽象数据类型 package ch03; public interface IQueue { public void clear(); pu...

weixin_44270248的博客 1269

欺诈文本分类微调(一):基座模型选型

通义千问Qwen2具有0.5B、1.5B、7B、72B等一系列参数大小不等的模型,我们需要做的是从大到小依次测试每个模型的能力,找到满足自己需要的最小参数模型。依1.5B和1.5B-Instruct的主要区别:按照官方文档,前者是预训练模型,后者是经过指令微调的模型。

golfxiao的专栏 2655

java数据结构之队列

队列是一种只能在一端进行插入数据操作,另一端进行操作的数据结构,插入数据的叫队尾,删除数据的叫队头。类似于生活中的排队打饭,进入队列中只能从队伍的后面进入,出队只能在队头出。队列是一种先进先出的数据结构。

mr_yuanshen的博客 614

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

数据结构(JAVA)队列

队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作并具有先进先出特点的特殊线性表。:进行插入操作的一端。:进行删除操作的一端。

2301_81225368的博客 1285

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Java 数据结构之队列

JAVA 队列 自定义循环队列

weixin_51215207的博客 926

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

java实现数据结构——队列的入队和出队

用java实现队列的入队出队 首先要定义几个变量与数组: a:表示队列的数组 rear:表示队列尾,这里初始化为0 (入队一个元素下标就往后移动一位) front:表示队列头,同样初始化为0 (出队一个元素下标就往后移动一位) maxsize:最大下标,这里初始化为4,但是队列只能存放3个。(队列的长度加一) 这里数组预留出的一个位置用来判断队列的空或满。 参考下面的图方便理解: 此时元素个数为...

HPF_99的博客 4290

java数据结构之队列的实现

本文将用java语言实现常用数据结构之一: 队列i

m0_53712854的博客 637

java队列数据结构_java实现队列数据结构代码详解

什么是队列结构一种线性结构,具有特殊的运算法则【只能在一端(队头)删除,在另一端(队尾)插入】。分类:顺序队列结构链式队列结构基本操作:入队列出队列给出一些应用队列的场景1):当作业被送到打印机的时候,就可以按到达的顺序排起来,因此每一份作业是队列的节点。2):售票口的人买票的顺序的按照先来先买的顺序售票。3):当所有的终端被占用,由于资源有限,来访请求需要放在一个队列中等候。队列是先进先出的!我...

weixin_39857153的博客 233

java数据结构——队列

上一篇博客我们拒了羽毛球筒的例子来类比栈这种数据结构,这次我们用排队这种模型来类比我们接下来要说的数据结构——队列

changshuchao的博客 2865

队列-Java实现队列数据结构

1、队列的基本概念 队列(queue)是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作, 而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端 称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元 素称为出队。因为队列只允许在一...

♾️ 1413

JAVA数据结构之队列

JAVA数据结构—队列 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出(FIFO—first in firs

senyio的博客 234

Java数据结构——队列(数组模拟队列)

Java数据结构——队列(数组模拟队列) 队列 队列是一个有序列表,可以用数组或是链表来实现。 遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出 示意图:(使用数组模拟队列示意图) 队列应用场景:银行叫号码排队 数组模拟队列 队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图, 其中 maxSize 是该队列的最大容量。 因为队列的输出、输入是分别从前后端来处理,因此需要两个变量 front及 rear分别记录队列前后端的下标,front 会随着数据输出而改

恶魔盒子 269

【Java/数据结构】队列(Quque)

本博客将介绍队列的相关知识,包括基于数组的普通队列,基于链表的普通队列,基于数组的双端队列,基于链表的双端队列,但不包括优先级队列(PriorityQueue),此数据结构将单独发一篇博客,那么,让我们从基础的队列开始吧!

2401_88030885的博客 1158

数据结构之队列的java实现

队列在计算机术语中使用queue,和list(排)其实是一个意思。队列也是一种数据结构,类似于栈,只是与栈相反,在队列中最先插入的数据也最先被移除,即先进先出(FIFO,First In First Out)。队列可以理解成排队,比如,食堂窗口排的队,越在前面的,越早得到服务而先离开。在银行大厅的排号的机器也许就用了队列这个数据结构。在打印的时候,有“添加到队列”的选项,队列应用是很广泛的。 队

三分地 2457
上一篇: 数据结构之栈(java)
下一篇: 数据结构之二叉树(Java)
^^_candice
博客等级 码龄10年 3粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值