(二)环形队列

news/2024/4/20 23:36:08/

1、基本介绍

2、应用实例(数组模拟环形队列)

package queue;import java.util.Scanner;public class ArrayRingQueue {public static void main(String[] args) {RingQueue queue = new RingQueue(3);Scanner scanner = new Scanner(System.in);boolean loop = true;char op;while(loop) {System.out.println("\n添加数据到环形队列(i)");System.out.println("删除环形队列的数据(r)");System.out.println("打印环形队列的数据(p)");System.out.println("查看环形队列首元素(g)");System.out.println("查看环形队列元素个数(c)");System.out.println("查看环形队列是否空(e)");System.out.println("查看环形队列是否满(f)");System.out.println("退出程序(q)~");System.out.print("请选择你要执行的操作:");op = scanner.next().charAt(0);switch (op) {case 'i':System.out.print("请输入要入队的元素:");int val = scanner.nextInt();queue.insert(val);break;case 'r':queue.remove();break;case 'p':queue.print();break;case 'g':queue.getFirst();break;case 'c':queue.getCount();break;case 'e':queue.isEmpty();break;case 'f':queue.isFull();break;default:scanner.close();loop = false;break;}}}
}//  数组模拟队列
class RingQueue {private int front; // 指向第一个元素private int rear;  // 指向最后一个元素的下一个位置private int maxSize;private int[] arr;public RingQueue(int maxSize) {front = 0;rear = 0;this.maxSize = maxSize;arr = new int[maxSize];}public void insert(int val) {if (isFull()) {throw new RuntimeException("环形队列满啦!");}arr[rear] = val;rear = (rear + 1) % maxSize;System.out.println("元素入队成功~");System.out.printf("入队元素:%d\n", val);}public void remove() {if (isEmpty()) {throw new RuntimeException("环形队列空荡荡~!");}System.out.println("元素出队成功~");System.out.printf("出队元素:%d\n", arr[front]);front = (front + 1) % maxSize;}public void print() {int size = getCount(); // 环形队列元素个数System.out.print("环形队列元素:");for (int i = front; i < rear + size - 1; i++) {System.out.print(arr[i] + " ");}System.out.println();}public void getFirst() {if (isEmpty()) {System.out.println("环形队列为空,请稍后重试!");}System.out.println("环形队首元素:" + arr[front]);}public int getCount() {int count = (rear + maxSize - front) % maxSize;System.out.printf("环形队列元素个数:%d\n", count);return count;}public boolean isEmpty() {if (front == rear) {System.out.println("环形队列为空~");return true;}System.out.println("环形队列有东西~");return false;}public boolean isFull() {if ((rear + 1) % maxSize == front) {System.out.println("环形队列已满~");return true;}System.out.println("还能再装一点~");return false;}}

 


http://www.ppmy.cn/news/859802.html

相关文章

Ring Buffers (环形消息缓冲区)

Ring Buffers 基本结构 即环形缓冲区&#xff1a;添加环形缓冲区是为了提供一种可以接受任意长度条目的缓冲区形式。 &#xff08;内存管理&#xff09; 是一种数据结构用于表示一个固定尺寸、头尾相连的缓冲区&#xff0c;适合缓存数据流。 内部除维护一个环形缓冲区外&am…

Ring buffer环形队列使用

环形缓存区&#xff1a; 环形缓冲器&#xff08;ringr buffer&#xff09;&#xff0c;也称作圆形队列&#xff08;circular queue&#xff09;&#xff0c;循环缓冲区&#xff08;cyclic buffer&#xff09;&#xff0c;圆形缓冲区&#xff08;circula buffer&#xff09;&…

国内黑颈鹤(Grus nigricollis)主要保护区信息汇总

黑颈鹤是世界上唯一一种高原鹤类,由俄国探险家普热尔瓦尔斯基于1876年在中国青海湖发现,是世界十五鹤中被最晚记录到的一种鹤,主要栖息于海拔2500-5000米的高原、草甸、沼泽和芦苇沼泽,以及湖滨草甸沼泽和河谷沼泽地带,是在高原淡水湿地生活的鹤类。 黑颈鹤中国国家重点保…

海洋动物活化石--鲎

生存在我国南海水域中被称为“活化石”的海洋动物──鲎&#xff0c;由于科学研究发现鲎具有极珍贵的药用价值&#xff0c;从而引发鲎试剂的生产开发热&#xff0c;造成鲎数量急剧减少。 鲎是一种珍贵的海产药用资源&#xff0c;从鲎血中提取的鲎素具有独特的抗菌抗病毒功效。对…

php n个人围坐一圈,环状排列

问题&#xff1a;有n个人围坐一圈&#xff0c;问&#xff0c;有多少种不同的坐法&#xff1f; 答案&#xff1a;有种或者说是种(两种相同答案的表达方式)。 前置理解1&#xff1a;我们先让这n个人坐成一条线&#xff0c;那么根据排列数定义&#xff0c;有种。现在&#xff0c;我…

MPB:中科院城环所杨军组-​​淡水浮游动物的采集及鉴定

为进一步提高《微生物组实验手册》稿件质量&#xff0c;本项目新增大众评审环节。文章在通过同行评审后&#xff0c;采用公众号推送方式分享全文&#xff0c;任何人均可在线提交修改意见。公众号格式显示略有问题&#xff0c;建议电脑端点击文末阅读原文下载PDF审稿。在线文档(…

染色体外环状DNA:肿瘤研究新方向

染色体外环状DNA&#xff08;ecDNA&#xff09;是癌症中活化原癌基因扩增的主要方式。区别于常染色体&#xff0c;这类生物大分子主要以环状的形式存在于细胞核当中&#xff0c;长度分布在103-106数量级&#xff0c;无中心粒。ecDNA序列中包含一个或者多个基因与调控元件&#…

环形队列结构

/* 环形队列&#xff08;Queue&#xff09;。队列简称队。是一种操作受限的线性表&#xff0c;只允许在表的一端进行插入&#xff0c;而在表的另一端进行删除。向队列中插入元素称为入队或进队&#xff1b;删除元素称为出队或离队。 其操作特性为先进先出&#xff08;First In…

环形序列

原题链接 题目大意&#xff0c;给你一个字符串&#xff0c;该字符串首尾相连组成一个环&#xff0c;选择这个环的一个位置作为字符串起点&#xff0c;使得字符串字典序最小。 例如EFGABCD&#xff0c;显然从A开始的ABCDEFG字符串字典序最小。 由于这题字符串长度最多100&…

光环形器

光纤环形器是一种多端口非互易光学器件&#xff0c;信号传输方向是不可逆的&#xff0c;光只能沿一个方向传播&#xff0c;从而可实现单根光纤上的双向光信号传输。光信号虽然可重定向方向但必须沿着一个方向按顺序通过端口&#xff0c;比如光信号若从端口1输入&#xff0c;则从…

畸变:桶形畸变和枕形畸变

畸变&#xff1a;畸变的本质是光学系统在不同视场由于镜头屈光度与光阑位置不同引起像高放大率不同导致的 分为桶型畸变和枕型畸变。 桶形畸变又称桶形失真&#xff0c;它是由镜头引起的成像画面呈桶形膨胀状的失真现象。桶形畸变虽然不影响成像清晰度&#xff0c;但却影响成像…

理解Python中的RingBuffer环形缓冲区

ringbuffer Refered from Wikipedia, a ring buffer(环形缓冲区 or circular buffer, circular queue, cyclic buffer) is a data strcture that uses a single, fixed-size buffer as if it were connected end-to-end. This structure lends itself easily to buffering data…

阳关林场的前世今生:结合锁眼卫星(Keyhole[KH])发掘“阳关林场”55年来的变化

结合锁眼卫星&#xff08;Keyhole[KH]&#xff09;发掘“阳关林场”55年来的变化 序言 虽然官方已经发布了调查通报&#xff0c;但是相关的信息仍然在网上持续发酵&#xff0c;对于这篇通报&#xff0c;显然很多网友并不认同&#xff0c;中.央.已经派出督.导.组奔赴 甘肃。今天…

鸟类名称

属于鸟类的动物太多了。鸟是有羽毛几乎覆盖全身的卵生脊椎动物。全世界现存鸟类约有156个科9 000余种。中国有81个科&#xff08;占51.9%&#xff09;&#xff0c;1244种&#xff0c;占世界鸟类总数的13%&#xff0c;一、东北区&#xff1a;松鸡、旋木雀、岩鹨、鹪鹩、太平鸟等…

CnOpenData中国观鸟记录数据

一、数据简介 观鸟&#xff0c;是指在自然环境中利用望远镜等观测记录设备在不影响野生鸟类正常生活的前提下观察鸟类的一种科学性质的户外活动。 鸟类&#xff0c;是生物多样性中最具指示性的类群。由全国各地观鸟爱好者们共同记录的观鸟信息&#xff0c;能够展示中国各地区的…

kafka无消息丢失配置

目录 前言&#xff1a; 消息丢失的场景 生产者消息丢失 Broker消息丢失 消费者消息丢失 消息丢失问题排查 无消息丢失配置&#xff1a; 参考资料&#xff1a; 前言&#xff1a; 使用消息中间件时&#xff0c;我们遇到最头疼的事就消息丢失&#xff0c;小则影响程序错误&…

java并发编程 10:AQS

目录 什么是AQS原理 什么是AQS juc包的结构如下图&#xff1a; AQS就是AbstractQueuedSynchronizer&#xff0c;是个抽象类&#xff0c;实现了自己的一些方法。它是阻塞式锁和相关的同步器工具的框架。很多并发类都是基于它实现的&#xff0c;如&#xff1a;ReentrantLock、Co…

家用机器人扫机外毛刷_家用扫地机毛刷的选择技巧

对于家用清洁工具&#xff0c;相信大多数人熟悉的依然是传统的扫把拖把&#xff0c;或是吸尘器&#xff0c;但今天我们要介绍的是扫地机。扫地机拥有吸尘器无法比拟的优势&#xff0c;而扫地机的清洁主力主要源于毛刷。所以&#xff0c;今 对于家用清洁工具&#xff0c;相信大多…

吸尘器要抢空气净化器饭碗啦?看吸尘器如何玩转空气净化!

近日外国的一项新发明&#xff0c;吸尘器不仅可以吸尘&#xff0c;还能净化空气。 近日&#xff0c;外国的一位名叫Nicole Assini的设计师&#xff0c;发明了一款超越传统的多功能吸尘器&#xff0c;除了市面上吸尘器的普遍功能之外&#xff0c;还新增了迷你空气净化器的功能。…

家用机器人吸尘器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

本文研究全球与中国市场家用机器人吸尘器的发展现状及未来发展趋势&#xff0c;分别从生产和消费的角度分析家用机器人吸尘器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国…