当前位置: 首页 > news >正文

专业做股权众筹的网站摄影图片网站

专业做股权众筹的网站,摄影图片网站,做网站莱芜,做网站费用分摊入什么科目文章目录队列简介数组模拟队列#xff08;无法复用#xff09;数组模拟环形队列#xff08;可复用#xff09;队列简介 队列是一个有序列表#xff0c;可以用数组或是链表来实现。 遵循先入先出的原则。即先存入队列的数据#xff0c;先取出#xff0c;后存入的后取出… 文章目录队列简介数组模拟队列无法复用数组模拟环形队列可复用队列简介 队列是一个有序列表可以用数组或是链表来实现。 遵循先入先出的原则。即先存入队列的数据先取出后存入的后取出。 示意图(使用数组模拟队列示意图) 有两个分别指向头部和尾部的“指针”。 数组模拟队列无法复用 1、实现思路 队列本身是有序列表若使用数组的结构来存储队列的数据则队列数组的声明如下图其中maxSize是该队列的最大容量。 因为队列的输出、输入是分别从前后端来处理因此需要两个变量front及rear分别记录队列前后端的下标front会随着数据输出而改变而rear则是随着数据输入而改变如图所示 当我们将数据存入队列时称为addQueueaddQueue的处理需要有两个步骤 ①将尾指针往后移。 ②若尾指针rear小于队列的最大下标maxSize-1则将数据存入rear 所指的数组元素中否则无法存入数据。 rear1当front rear[空] rearmaxSize-1[队列满] 2、代码实现 ①数组实现队列类 class ArrQueue {private int maxSize; //队列数组最大容量private int front; //指向队列头部private int rear; //指向队列尾部private int[] queue;//创造队列的构造器public ArrQueue(int maxSize){this.maxSize maxSize;queue new int[maxSize];front -1; //其实是队列第一个元素的前一个索引rear -1; //最后一个元素的索引}//判断是否满public boolean isFull(){return rear maxSize - 1;}//判断是否空public boolean isEmpty(){return front rear;}//添加元素public void addQueue(int n){if (isFull()){System.out.println(队列已经满了无法添加);return;}else {rear;queue[rear] n;}}//取出元素public int getQueue(){if (isEmpty()){throw new RuntimeException(队列为空无元素可取);}else {front;return queue[front];}}//显示队列public void showQueue(){if (isEmpty()){System.out.println(队列为空没有元素可显示);return;}for (int i : queue){System.out.println(i);}}//显示头数据public void headQueue(){if (isEmpty()){throw new RuntimeException(队列为空没有头数据);}int i front;System.out.println(queue[i]);}}②测试类 import java.util.Scanner;/*** Author: Yeman* Date: 2021-10-11-22:02* Description:*/ public class ArrayQueueTest {public static void main(String[] args) {//创建一个队列ArrQueue arrQueue new ArrQueue(3);//创建一个用户输入Scanner scanner new Scanner(System.in);//创建一个功能菜单char key ;boolean isShow true;while (isShow){System.out.println(s:显示队列);System.out.println(a:添加数据);System.out.println(g:取出数据);System.out.println(h:显示头数据);System.out.println(e:退出程序);key scanner.next().charAt(0);switch (key){case s :arrQueue.showQueue();break;case a :System.out.println(请输入一个数);int value scanner.nextInt();arrQueue.addQueue(value);break;case g :try {System.out.println(arrQueue.getQueue());} catch (Exception e) {e.printStackTrace();}break;case h :try {arrQueue.headQueue();} catch (Exception e) {e.printStackTrace();}break;case e :isShow false;break;}}System.out.println(程序退出...);} } 数组模拟环形队列可复用 对前面的数组模拟队列的优化充分利用数组。将数组看做是一个环形的即取出之后有位置可以空出来添加。(通过取模的方式来实现即可) 分析说明: ①尾索引的下一个为头索引时表示队列满即将队列容量空出一个作为约定。在作判断队列满的时候需要注意(rear 1) % maxSize front [满] ②rear front [空] 1、思路如下: ①front 变量的含义调整front 指向队列的第一个元素, 也就是说arr[front]就是队列的第一个元素front的初始值为0。 ②rear 变量的含义调整rear 指向队列的最后一个元素的后一个位置因为希望空出一个空间做为约定rear的初始值0。 ③当队列满时条件是(rear 1) % maxSize front [满] ④对队列为空的条件是rear front[空] ⑤当我们这样分析队列中有效的数据的个数(rear maxSize - front) % maxSize ⑥我们就可以在原来的队列上修改得到一个环形队列 2、代码实现 ①数组实现环形队列类 class ArrQueue {private int maxSize; //队列数组最大容量private int front; //指向队列头部队列第一个元素的索引private int rear; //指向队列尾部队列最后一个元素的后一个索引private int[] queue;//创造队列的构造器public ArrQueue(int maxSize){this.maxSize maxSize;queue new int[maxSize];}//判断是否满public boolean isFull(){return (rear 1) % maxSize front;}//判断是否空public boolean isEmpty(){return front rear;}//添加元素public void addQueue(int n){if (isFull()){System.out.println(队列已经满了无法添加);return;}else {queue[rear] n;rear (rear 1) % maxSize;}}//取出元素public int getQueue(){if (isEmpty()){throw new RuntimeException(队列为空无元素可取);}else {int data queue[front];front (front 1) % maxSize;return data;}}//显示队列public void showQueue(){if (isEmpty()){System.out.println(队列为空没有元素可显示);return;}for (int i front; i front size(); i) {System.out.printf(arr[%d] %d\n,i % maxSize,queue[i % maxSize]);}}//求当前队列有效数据个数public int size(){return (rear maxSize - front) % maxSize;}//显示头数据public void headQueue(){if (isEmpty()){throw new RuntimeException(队列为空没有头数据);}System.out.println(queue[front]);}}②测试类 import java.util.Scanner;/*** Author: Yeman* Date: 2021-10-11-22:02* Description:*/ public class ArrayQueueTest {public static void main(String[] args) {//创建一个队列ArrQueue arrQueue new ArrQueue(3); //说明该环形队列的最大有效数据为2//创建一个用户输入Scanner scanner new Scanner(System.in);//创建一个功能菜单char key ;boolean isShow true;while (isShow){System.out.println(s:显示队列);System.out.println(a:添加数据);System.out.println(g:取出数据);System.out.println(h:显示头数据);System.out.println(e:退出程序);key scanner.next().charAt(0);switch (key){case s :arrQueue.showQueue();break;case a :System.out.println(请输入一个数);int value scanner.nextInt();arrQueue.addQueue(value);break;case g :try {System.out.println(arrQueue.getQueue());} catch (Exception e) {e.printStackTrace();}break;case h :try {arrQueue.headQueue();} catch (Exception e) {e.printStackTrace();}break;case e :isShow false;break;}}System.out.println(程序退出...);} }
http://www.yutouwan.com/news/355000/

相关文章:

  • 学网站建设需要多长时间如何在个人电脑用源码做网站
  • 滕州网站设计竞彩足球最新比赛
  • 建网站石家庄h5怎么设计网页
  • 门户网站网站不允许上传文件
  • 建设网站都需要准备什么dw网站开发环境
  • 精品课程 网站建设质量自己做网站租服务器
  • 做网站有哪几种语言网站建设人员
  • 哪个免费自助建站系统最好用商城网站制作公司
  • 网站设计说明书整合珠海网站建设 旭洁
  • 杭州外贸建站图书馆信息化网站建设
  • 南京建设工程公共资源交易中心网站做视频在线观看网站
  • 上海建设网站价格怎么注册17做网站
  • 怎么做网站地图的样式seo工具网站
  • 企业网站建设规划的基本原则有哪些新华书店网上商城
  • 在哪里找个人做网站的网站建设与管理学的是什么
  • 做网站运营有前途么自己怎么做游戏推广赚钱
  • 上海市建设厅网站查询wordpress获取自定义字段的值
  • 免费图片编辑网站橙域名网站
  • 产品网站开发做非遗网站的原因
  • 做网站宽高怎么决定企业设计网站公司
  • 免费货源在线网站python自学网
  • js网站开发教程网络营销模式下品牌推广研究
  • 用asp做网站有哪控件做创意礼品定制的网站
  • 在东莞建公司网站嘉兴官网
  • K12网站怎么建设地方门户网站盈利模式
  • 建设网站用什么软件如何在免费网站上做推扩
  • 唐尧文化 网站建设工作总结湖北网络推广
  • 书画展示网站模板服务器网站维护
  • cad二次开发网站沭阳城乡建设局网站
  • 网站没有模版能打开吗公众号的微网站怎么做