java 环形数组,c语言数组实现环形队列

  java 环形数组,c语言数组实现环形队列

  思维分析:

  如何解决写爬虫IP受阻的问题?立即使用。

  1.调整front变量的含义:front指向队列的第一个元素,意味着arr[front]是队列的第一个元素。

  front的初始值=0

  2.对后置变量的含义做一个调整:后置指向队列中最后一个元素的最后一个位置,因为约定希望空出一个空格。

  后部初始值=0

  3.当队列已满时,条件是(后1)% maxSize==前[满]

  4.队列为空的条件,后方==前方为空

  5.当我们对此进行分析时,队列中有效数据的数量(rear maxsize-front)% maxsize//rear=1 front=0

  6.我们可以修改原始队列,得到一个循环队列。

  java相关视频教程分享:Java学习视频

  代码实现:

  导入Java . util . scanner;

  公共类CircleArrayQueueDemo {

  公共静态void main(String[] args) {

  //测试一。

  system . out . println(‘测试数组模拟循环队列的情况~ ~’);

  //创建循环队列

  CircleArray queue=new CircleArray(4);//解释设置4,其队列最大有效数据为3。

  char key=“”;//接收用户输入

  Scanner scanner=新扫描仪(system . in);//

  布尔循环=真;

  //输出菜单

  while(循环){

  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);//接收一个字符

  开关(钥匙){

  案例:

  queue . show queue();

  打破;

  案例“a”:

  System.out.println(“输出一个数字”);

  int value=scanner . nextint();

  queue.addQueue(值);

  打破;

  案例“g”://获取数据

  尝试{

  int RES=queue . get queue();

  System.out.printf(检索到的数据是%d\n ,RES);

  } catch(异常e) {

  //TODO:处理异常

  system . out . println(e . getmessage());

  }

  打破;

  情况“h”://查看队列头的数据

  尝试{

  int RES=queue . head queue();

  System.out.printf(队列头的数据是%d\n ,RES);

  } catch(异常e) {

  //TODO:处理异常

  system . out . println(e . getmessage());

  }

  打破;

  案例“e”://退出

  scanner . close();

  loop=false

  打破;

  默认值:

  打破;

  }

  }

  System.out.println(程序退出~ ~ );

  }

  }

  类CircleArray {

  private int maxSize//指示数组的最大容量

  //对front变量的含义做一个调整:front指向队列的第一个元素,表示arr[front]是队列的第一个元素。

  //初始值//front=0

  私有int front

  //对后方变量的含义做一个调整:后方指向队列中最后一个元素的最后一个位置。因为我想提供一个空间作为会议场所。

  //初始值//rear=0

  私人int rear//队列结尾

  private int[]arr;//此数据用于存储数据和模拟队列。

  public circle array(int arr maxsize){

  maxSize=arrMaxSize

  arr=new int[maxSize];

  }

  //确定队列是否已满

  public boolean isFull() {

  return(rear 1)% maxSize==front;

  }

  //确定队列是否为空。

  public boolean isEmpty() {

  return rear==front

  }

  //向队列中添加数据

  public void addQueue(int n) {

  //确定队列是否已满

  if (isFull()) {

  System.out.println(队列已满,无法添加数据~ );

  返回;

  }

  //将数据直接添加到

  arr[rear]=n;

  //把后面往后移,必须考虑把模块拿到这里。

  rear=(rear 1)% maxSize;

  }

  //获取队列的数据,退出队列。

  public int getQueue() {

  //确定队列是否为空。

  if (isEmpty()) {

  //通过引发异常

  抛出new RuntimeException(队列为空,所以无法获取数据);

  }

  //这里我们需要分析一下,front是指向队列的第一个元素

  //1.先将front对应的值保存到一个临时变量中。

  //2.把前面往后移,考虑拿模具。

  //3.返回临时保存的变量

  int value=arr[front];

  front=(front 1)% maxSize;

  返回值;

  }

  //显示队列的所有数据

  public void showQueue() {

  //遍历

  if (isEmpty()) {

  System.out.println(队列为空,没有数据~ ~ );

  返回;

  }

  //Idea:从正面遍历,遍历多少个元素?

  for(int I=front;I正面尺寸();i ) {

  system . out . printf( arr[% d]=% d \ n ,i % maxSize,arr[I % maxSize]);

  }

  }

  //查找当前队列中有效数据的数量

  public int size() {

  //rear=2

  //front=1

  //maxSize=3

  return(rear maxSize-front)% maxSize;

  }

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

  public int headQueue() {

  //判断

  if (isEmpty()) {

  抛出new runtime exception(‘队列为空,无数据~ ~’);

  }

  return arr[front];

  }

  }分享相关文章和教程:java快速入门。以上是java中使用数组实现循环队列的细节。请多关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: