java怎么实现队列,编写实现队列的例程,使用数组

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: