java怎么实现队列,编写实现队列的例程,使用数组
数组实现排队方法如下:
如何解决写爬虫IP受阻的问题?立即使用。
1.队列本身是一个有序列表。如果用数组的结构来存储队列的数据,那么队列数组的语句如上图,其中maxSize是队列的最大容量;
2.队列的输入和输出分别从前端到后端进行处理,所以需要前后变量分别记录队列前后端的下标,这些下标会随着数据的输入而变化;
3.存储数据的队列称为“队列”:
空:后==前;
全队:后方=maxsize-1;
当尾指针rear maxSize-1时,数据将存储在rear所指向的数组中。
视频教程分享:java视频教程
具体实现代码如下:
(1)、判断队列是否已满。
(2)确定队列是否为空。
(3)向队列中添加数据。
(4)获取队列的数据并退出队列;
(5)显示当前队列数据;
(6)显示队列的头数据,注意不是取出的数据;
例子如下:
包com . ycx . queue;
导入Java . util . scanner;
公共类ArrayQueueDemo {
公共静态void main(String[] args) {
//测试
//创建队列
array queue queue=new array queue(3);
char key=“”;//接受用户输入
扫描仪输入=新扫描仪(system . in);
布尔标志=真;//控制循环默认为无限循环
//输出菜单
while (flag){
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=input.next()。charAt(0);//接受一个字符
开关(钥匙){
案例:
queue . show queue();
打破;
案例“a”:
System.out.println(输入数字);
int val=input . nextint();
queue . add queue(val);
打破;
Case g: //获取数据,因为方法中抛出了一个异常,所以需要在这里捕获它。
尝试{
int RES=queue . get queue();
System.out.printf(检索到的数据是%d\n ,RES);
}catch(异常e){
system . out . println(e . getmessage());
}
打破;
案例“h”:
尝试{
int RES=queue . head queue();
System.out.printf(队列头的数据是%d\n ,RES);
}catch(异常e){
system . out . println(e . getmessage());
}
打破;
情况“e”://退出程序
input . close();//关闭
flag=false
打破;
默认值:
打破;
}
}
System.out.println(“程序出口”);
}
}
//首先,使用array模拟队列-编写一个ArrayQueue类
类数组队列{
private int maxSize//指示数组的最大容量
私有int front//队列头
私人int rear//队列结尾
private int[]arr;//此数组用于存储数据和模拟队列。
//创建队列的构造函数
public array queue(int arrMaxsize){
maxSize=arrMaxsize
arr=new int[maxSize];//初始化数组
front=-1;//指向队列头,分析前面是指向队列头前一个位置的有效数据的位置。
rear=-1;//指向队列的末尾,队列末尾的数据(即队列中的最后一个位置)
}
//1.确定队列是否已满。
public boolean isFull(){
return rear==maxSize-1;//因为rear是以-1开头的(不懂就看笔记里的图)
}
//2.确定队列是否为空。
public boolean isEmpty(){
return rear==front
}
//3.向队列中添加数据
public void addQueue(int n){
//确定队列是否已满。
if(isFull()){
System.out.println(队列已满,无法添加数据);
}
后方;//rear向后移动
arr[rear]=n;//也可以直接写成arr [rear]:先加后取。
}
//4.获取队列的数据并退出队列。
public int getQueue(){
if(isEmpty()){
抛出new RuntimeException(队列为空,所以无法获取数据);
}
正面;//front向后移动,因为front指向前一个元素(front=-1)
return arr[front];
}
//5.显示当前队列数据
public void showQueue() {
//遍历
if(isEmpty()){
System.out.println(当前队列为空);
返回;
}
for(int I=0;长度;i ) {
system . out . printf( arr[% d]=% d \ n ,I,arr[I]);//打印格式
}
}
//6.显示队列的标题数据。请注意,这不是为了获取数据。
public int headQueue(){
if(isEmpty()){
引发新的RuntimeException(“队列为空”);
}
return arr[front 1];//注意:前面需要加1
}
}问题分析并优化
(1)、缺点:数组只能使用一次,无法实现代码复用。
(当取出数组中的所有元素时,数组为空,但不能向数组中添加任何元素)
(2)优化:可以改成循环数组(用于余数检索)。
相关文章教程推荐:java快速入门以上是如何在java中通过数组实现队列的细节。请多关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。