首页 > 作文

java实现队列queue数据结构详解

更新时间:2023-04-04 21:36:39 阅读: 评论:0

目录
概念队列中两个主要操作队列遵循以下条件:队列的数组实现总结

概念

队列是一种非原始(特殊)的线性表,是一种先进先出(fifo)的数据结构。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。

fifo:first input first output,即先添加的元素,先移除,最后添加的元素,最后移like造句除。

工作方式类似于商场排队结账情形:

数组模拟队列图示:

队列中两个主要操作

插入值操作:inrt ——》 enqueue(入队) ——》参数是要插入的数据data

删除值操作:remove ——》 dequeue (出队)——》 无参

队列遵循以下条件:

如果 front = 0,那么队列就是空的。

如果rear = size of the queue,那么队列就是满了。

如果front = rear,那么队列中至少有一个元素。

如果你想知道队列中元素的总数,那么使用这个公式计算(rear – front)+1。

队列的数组实现

我们可以通过数组、堆栈和链表来实现队列。其中数组是实现队列的最简单方法。

创建一个大小为 n 的数组。将 front 和 rear 的值初始化为 -1,该值表示该数组当前为空经典文章朗诵散文。

编写一个arrayqueue类如下:

class arrayqueue {private int maxsize; // 数组的最大容量private int front; // 队列头private int rear; // 队列尾private in酒精燃烧产生什么t[] arr; // 存放数据, 模拟队列 // 创建构造器,初始化public arrayqueue(int arrmaxsize) {maxsize = arrmaxsize;arr = new int[maxsize];front = -1; // front 是指向队列头的前一个位置rear = -1;  // rear  是指向队列尾的数据(最后一个数据)} // 判断队列是否已满public boolean isfull() {return rear == maxsize - 1;} // 判断队列是否为空public boolean impty() {return rear == front;} // 添加数据public 个人目标计划书怎么写void addqueue(int n) {if (isfull()) {system.out.println("队列已满,不能再添加数据了!");return;}rear++; // 让rear 后移arr[rear] = n;} // 获取数据public int getqueue() {if (impty()) {// 通过抛出异常throw new runtimeexception("队列为空,无数据可取!");}front++; // front后移return arr[front]; } // 显示队列的所有数据public void showqueue() {        if (impty()) {system.out.println("队列空的,没有数据~~");return;}for (int i = 0; i < arr.length; i++) {system.out.printf("arr[%d]=%d\n", i, arr[i]);}} // 显示队列的头部指向的下一ppt课件个public int headqueue() {if (impty()) {throw new runtimeexception("队列为空,没有数据~~");}return arr[front + 1];}}

编写测试方法:

//创建一个队列arrayqueue queue = new arrayqueue(3);char key = ' '; scanner scanner = new scanner(system.in);//boolean loop = true;//输出一个菜单选项while(loop) {system.out.println("s(show): 显示队列");system.out.println("e(exit): 退出程序");system.out.println("a(add): 添加数据到队列");system.out.println("g(get): 从队列取出数据");system.out.println("h(head): 查看队列头的数据");key = scanner.next().charat(0);//接收一个字符switch (key) {ca 's': //显示队列所有数据queue.showqueue();break;ca 'a': //添加数据system.out.println("输出一个数");int value = scanner.nextint();queue.addqueue(value);break;ca 'g': //依次取出数据try {int res = queue.getqueue();system.out.printf("取出的数据是%d\n", res);} catch (exception e) {// todo: handle exceptionsystem.out.println(e.getmessage());}break;ca 'h': //查看队列头指向try {int res = queue.headqueue();system.out.printf("队列头的数据是%d\n", res);} catch (exception e) {// todo: handle exceptionsystem.out.println(e.getmessage());}break;ca 'e': //退出程序scanner.clo();loop = fal;break;default:break;}}system.out.println("程序退出~~");}

总结

到此这篇关于java实现队列queue数据结构详解的文章就介绍到这了,更多相关java实现队列queue内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 21:36:38,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/28799444ccd9f8e1dfff96c900884aa0.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:java实现队列queue数据结构详解.doc

本文 PDF 下载地址:java实现队列queue数据结构详解.pdf

上一篇:甲烷燃料电池
下一篇:返回列表
标签:队列   数据   数组   操作
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图