(二)环形队列

news/2025/2/15 4:10:06/

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…