java 排序队列_java实现顺序队列

java 排序队列_java实现顺序队列packagequeue;importjava.util.Scanner;publicclassArrayQueueLoop{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstub//测试代码//测试数组循化队列CircleQueuetestQueue=newCircleQueue(4);//设置的是有效…

大家好,又见面了,我是你们的朋友全栈君。

packagequeue;importjava.util.Scanner;public classArrayQueueLoop

{public static voidmain(String[] args)

{//TODO Auto-generated method stub//测试代码//测试数组循化队列

CircleQueue testQueue=new CircleQueue(4);//设置的是有效的数据,存在有一个空间作为约定

char key=’ ‘;//接受用户的输入

Scanner in=newScanner(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=in.next().charAt(0);switch(key)

{case ‘s’:

testQueue.showQueue();break;case ‘e’:

in.close();

loop=false;break;case ‘a’:

System.out.println(“请输入要入队的数字:”);int add=in.nextInt();

testQueue.addQueue(add);break;case ‘g’:try{

System.out.printf(“出队的元素为:%d\n”,testQueue.getQueue());

}catch(Exception e) {//TODO: handle exception

System.out.println(e.getMessage());

}break;case ‘h’:try{

System.out.printf(“队首元素为:%d\n”,testQueue.headQueue());

}catch(Exception e) {//TODO: handle exception

System.out.println(e.getMessage());

}break;default:break;

}

}

System.out.println(“退出成功!”);

}

}classCircleQueue

{private int maxSize;//数组的最大容量

private int front;//指向队列的头

private int rear;//指向队列的尾部

private int[] arr;//该数组用于存放队列,模拟队列//创建队列的构造器

public CircleQueue(intarrMaxSize)

{

maxSize=arrMaxSize;

arr=new int[maxSize];

front=0;//指向队列的头部,初始值为0

rear=0;//指向队列的尾部的后一个位置,初始值为0

}//判断队列是否满

public booleanisFull()

{return rear==maxSize-1;

}//判断队列是否为空

public booleanisEmpty()

{return rear==front;

}//添加数据到队列

public void addQueue(intn)

{//判断队列是否满了

if(isFull())

{

System.out.println(“队列满,不能加入数据!”);

}//直接将数据加入就好了

arr[rear]=n;//将rear后移此处必须取模

rear=(rear+1)%maxSize;

}//获取队列的数组,数据出队列

public intgetQueue()

{//判断队列是不是空了

if(isEmpty())

{//抛出异常

throw new RuntimeException(“队列空,不能够取数据!”);

}else//不为空

{//这里需要分析出,front是队列第一个元素//1.先front的对应的值保存到一个临时的变量//2.front后移//3.将临时保存的变量返回

int value=arr[front];

front=(front+1)%maxSize;returnvalue;

}

}//显示队列所有的数据

public voidshowQueue()

{//简单的遍历

if(isEmpty())

{

System.out.println(“队列为空,没有数据!”);return;

}//思路从front开始遍历,遍历时候要遍历多少个元素就可以了//要求出当前队列的个数

for(int i=front;i

{

System.out.printf(“arr[%d]=%d\n”,i%maxSize,arr[i%maxSize]);//注意可能会越界,所以要取模

}

}//返回当前队列有多少元素

public intgetQueueElementNumbers()

{return (rear+maxSize-front)%maxSize;

}//显示队列的头数据,注意不是取出数据

public intheadQueue()

{//判断队列已经为空就没有头数据

if(isEmpty())

{

System.out.println(“队列空的,没有数据!”);throw new RuntimeException(“队列空的,没有数据!”);

}returnarr[front];

}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160436.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • clion 激活_最新在线免费激活

    (clion 激活)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html0BXA05X8YC-eyJsaWNlbnNlSWQi…

  • 模逆矩阵「建议收藏」

    模逆矩阵「建议收藏」整数a对同余n之乘法模逆元是指满足以下公式的整数b乘法模逆元又称为数论倒数,其实可以看作是普通倒数在模算术中的推广。同理,乘法模逆矩阵可以看作是普通逆矩阵在模算术中的推广。例如求如下矩阵K的模26的乘法逆此时,求逆矩阵的如下公式依然有效,不过,里面的符号含义要推广到模算术中:这里,ad-bc=3×5-2×3=9,的含义不再是普通的倒数,而是数论倒数所以…

  • 黑盒测试 因果图_黑盒测试的六种方法

    黑盒测试 因果图_黑盒测试的六种方法在一个功能模块中往往含有许多的功能模块,如果单独去测试每一个模块则会显得事倍功半,并且逻辑也会比较混乱,容易遗漏一些数据。因果图法是一个比较有用的方法,其考虑到了输入数据之间以及输入与输出之间的各种关系。一、下面首先介绍因果图中的基本符号 1、恒等含义:若原因出现则结果也出现,原因不出现,结果也不出现。即:如a=1.则b=1; a=0,则b=0。2、非(~)含

  • lstm多变量时间序列预测(时间序列如何预测)

    lstm时间序列预测模型时间序列-LSTM模型(TimeSeries-LSTMModel)Advertisements广告PreviousPage上一页NextPage下一页Now,wearefamiliarwithstatisticalmodellingontimeseries,butmachinelearn…

  • windows添加路由命令route add_windows添加路由命令route add

    windows添加路由命令route add_windows添加路由命令route addLinux下routeadd命令添加路由列表

  • DHCP option82字段「建议收藏」

    DHCP option82字段「建议收藏」DHCPoption82字段的添加1.添加option82字段1.添加option82字段option82是dhcp报文中的中继代理信息选项(relayagentinformationoption),抓取上行的dhcp报文,根据目的端口为67的报文进行处理,解析报文,在原始报文的基础上添加option82字段,添加之后进行ip,udp的重新校验值的计算,然后发往PON口。温馨提示:以上文章描述如有不清晰之处,欢迎在评论区评论,如有时间,会第一时间回复,谢谢!…

    2022年10月16日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号