用数组模拟队列的实现

package com.atguigu.queue;import jdk.nashorn.internal.ir.ReturnNode;import java.util.Scanner;/*** @创建人 wdl* @创建时间 2021/3/17* @描述*/
public class ArrayQueueDemo {public static void main(String[] args) {//测试一把//创建一个队列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){case 's':queue.showQueue();break;case 'a':System.out.println("输入一个数");int value=scanner.nextInt();queue.addQueue(value);break;case 'g'://取出数据try {int res=queue.getQueue();System.out.println("取出的数据是:"+res);} catch (Exception e) {System.out.println(e.getMessage());}break;case 'h'://查看队列头的数据try {int res = queue.headQueue();System.out.println("队列头的数据是:"+res);} catch (Exception e) {System.out.println(e.getMessage());}break;case 'e'://退出scanner.close();loop=false;break;default:break;}}System.out.println("程序退出");}
}//使用数组模拟队列编写一个ArrayQueue类
class ArrayQueue{private int maxSize;//数组的最大容量private int front;//队列头private  int rear;//队列尾private int[] arr;//该数组用于存放数据,模拟队列public ArrayQueue(int arrMaxSize){maxSize=arrMaxSize;arr=new int[maxSize];front=-1;//指向队列头部,分析出front是指向队列头的前一个位置rear=-1;//指向队列尾,只想队列尾的数据(即就是队列最后一个数据)}//判断队列是否满public boolean isFull(){return rear==maxSize-1;}//判断队列是否为空public boolean isEmpty(){return rear==front;}//添加数据到队列public void addQueue(int n){//判断队列是否满if(isFull()){System.out.println("队列满,不能加入数据");return;}rear++;arr[rear]=n;}//获取队列的数据,出队列public int getQueue(){//判断队列是否为空if(isEmpty()){//通过抛出异常throw new RuntimeException("队列空,不能取数据");}front++;//front后移return arr[front];}//显示队列的所有数据public void showQueue(){//遍历if(isEmpty()){System.out.println("队列空的,没有数据");return;}for (int i = 0; i < arr.length; i++) {System.out.println("arr["+i+"]"+"="+arr[i]);}}//显示队列的头数据,注意不是取出数据public int headQueue(){//判断if(isEmpty()){throw new RuntimeException("队列空的,没有数据");}return arr[front+1];//因为front指向队列头的前一个位置}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/327000.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

时间格式转换2020-04-09T23:00:00.000+08:00

时间格式转换2020-04-09T23:00:00.00008:00 /*** 日期格式转换yyyy-MM-ddTHH:mm:ss.SSSXXX (yyyy-MM-ddTHH:mm:ss.SSSZ) TO yyyy-MM-dd HH:mm:ss* 2020-04-09T23:00:00.00008:00 TO 2020-04-09 23:00:00* throws ParseException*/public static String dealDateFormat(String…

云计算设计模式(三)——补偿交易模式

撤消由一系列步骤&#xff0c;它们共同限定了最终一致性操作中&#xff0c;如果一个或多个步骤失败执行的工作。按照最终一致性模型&#xff0c;业务实现复杂的业务流程和工作流的云托管的应用程序中很常见。 背景和问题 在云中运行的应用程序频繁修改数据。此数据可跨在各种地…

java反射 修改静态方法的值 setAccessible

转载自 java反射 修改静态方法的值 setAccessible 这几天闲来无事。在网上看了一个题目&#xff0c;相信大家都知道这个题目 static void change(String str){str"welcome";}public static void main(String[] args) {String str "123";change(str);Syste…

mybatis简单案例源码详细【注释全面】——实体层(User.java)

/** * Title: Users.java * Package org.entity * Description: TODO该方法的主要作用&#xff1a; * author A18ccms A18ccms_gmail_com * date 2017-10-5 下午6:53:06 * version V1.0 */ package org.entity;import java.util.Date;/** * * 项目名称&#xff1a;s…

API网关Ocelot 使用Polly 处理部分失败问题

在实现API Gateway过程中&#xff0c;另外一个需要考虑的问题就是部分失败。这个问题发生在分布式系统中当一个服务调用另外一个服务超时或者不可用的情况。API Gateway不应该被阻断并处于无限期等待下游服务的状态。但是&#xff0c;如何处理这种失败依赖于特定的场景和具体服…

数组模拟环形队列

思路分析 代码实现 package com.atguigu.queue;import java.util.Calendar; import java.util.Scanner;/*** 创建人 wdl* 创建时间 2021/3/17* 描述*/ public class CircleArrayQueueDemo {public static void main(String[] args) {//测试一把System.out.println("测试数…

Error:(1, 10) java: 需要class, interface或enum

https://blog.csdn.net/zf18234031156/article/details/103047649 反复做这一步&#xff0c;30多个文件一个一个弄&#xff0c;有乱码用txt打开&#xff0c;黏贴覆盖&#xff0c; 目录 1.前言 2.原因(UTF-8BOM造成) 3.如何解决 3.11使用Notepad&#xff0c;选择“格式--以…

彻底理解ThreadLocal

转载自 彻底理解ThreadLocal 先总述&#xff0c;后分析 深挖过threadLocal之后&#xff0c;一句话概括&#xff1a;Synchronized用于线程间的数据共享&#xff0c;而ThreadLocal则用于线程间的数据隔离。所以ThreadLocal的应用场合&#xff0c;最适合的是按线程多实例&#xff…

mybatis简单案例源码详细【注释全面】——实体层(Role.java)

package org.entity;import java.util.Date; /*** * * 项目名称&#xff1a;ssm_chop2 * 类名称&#xff1a;Role * 类描述&#xff1a; 角色表的实体类 * 创建人&#xff1a;Mu Xiongxiong * 创建时间&#xff1a;2017-10-7 上午10:01:31 * 修改人&#xff…

IDEA导入Eclipse项目

https://blog.csdn.net/zeal9s/article/details/90690524 背景&#xff1a;用习惯了idea再去用eclipse实在用的不习惯&#xff0c;于是将老的eclipse项目导入到eclipse&#xff0c;网上有很多教程&#xff0c;看了很多博客都不行&#xff0c;一直报错&#xff0c;各种报错&…

云计算设计模式(四)——消费者的竞争模式

允许多个并发用户处理在同一个通讯通道接收的消息。这种模式使系统能够同时处理多个邮件&#xff0c;以优化吞吐量&#xff0c;提高可扩展性和可用性&#xff0c;以及平衡工作负载。 背景和问题 在云中运行的应用程序&#xff0c;可以预计&#xff0c;以处理大量的请求。而不是…

带头单链表有序版

package com.atguigu.linkedlist;/*** 创建人 wdl* 创建时间 2021/3/17* 描述*/ public class SingleLinkedListDemo {public static void main(String[] args) {//进行测试//先创建节点HeroNode hearo1 new HeroNode(1, "宋江", "及时雨");HeroNode hear…

mybatis简单案例源码详细【注释全面】——Dao层接口(UserMapper.java)

/** * Title: IUserDao.java * Package org.dao * Description: TODO该方法的主要作用&#xff1a; * author A18ccms A18ccms_gmail_com * date 2017-10-5 下午8:59:34 * version V1.0 */ package org.dao;import java.util.Date; import java.util.List; import java.u…

java笔记--关于线程同步(7种同步方式)

转载自 java笔记--关于线程同步&#xff08;7种同步方式&#xff09; 为何要使用同步&#xff1f; java允许多线程并发控制&#xff0c;当多个线程同时操作一个可共享的资源变量时&#xff08;如数据的增删改查&#xff09;&#xff0c; 将会导致数据不准确&#xf…

前后端分离趋势谈

最近已经不止一个人和我提起过vue了&#xff0c;在我的前端印象中&#xff0c;我还停留在smarty渲染模版&#xff0c;jquery做js处理。学了一晚上&#xff0c;对现在这种工程化webpack打包生成html&#xff0c;js&#xff0c;css的生产方式越来越有兴趣了。工作年限摆在这里的好…

mybatis简单案例源码详细【注释全面】——Dao层映射文件(UserMapper.xml)【重要】

<?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace"org.dao.UserMapper"><…

from + size must be less than or equal to: [10000] but was [10550]

from size must be less than or equal to: [10000] but was [10550]_绅士jiejie的博客-CSDN博客 以上错误是ElasticSearch分页搜索时出现的&#xff0c;这是因为ES默认支持的最大条数就是10000条&#xff0c;深度分页导致总条数超过10000&#xff0c;就会报这个错。 解决方…

java并发编程之4——Java锁分解锁分段技术

转载自 java并发编程之4——Java锁分解锁分段技术 并发编程的所有问题&#xff0c;最后都转换成了&#xff0c;“有状态bean”的状态的同步与互斥修改问题。而最后提出的解决“有状态bean”的同步与互斥修改问题的方案是为所有修改这个状态的方法都加上锁&#xff0c;这样也就可…

云计算设计模式(五)——计算资源整合模式

合并多个任务或操作成一个单一的计算单元。这种模式可以提高计算资源的利用率&#xff0c;并降低与云托管的应用程序进行计算处理相关的成本和管理开销。 背景和问题 云应用程序频繁执行各种操作。在某些解决方案也可能是有意义的最初遵循的关注点分离的设计原则&#xff0c;并…