队列
时间:2019-10-24
本文章向大家介绍队列,主要包括队列使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.队列介绍
2.数组模拟队列思路
3.代码实现
package com.queue; import java.util.Scanner; /**数组队列 * @author nidegui * @create 2019-10-22 16:18 */ public class QueueDemo { public static void main(String[] args) { //创建一个队列 ArrayQueeu queeu=new ArrayQueeu(3); char key; Scanner scanner =new Scanner(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 = scanner.next().charAt(0); //接受字符 switch (key){ case 's': queeu.showData(); break; case 'a': System.out.println("输入一个数"); int next = scanner.nextInt(); queeu.addQueue(next); break; case 'g': int queues = queeu.getQueue(); System.out.printf("取出的数据是%d\n",queues); break; case 'h': int i = queeu.headQueue(); System.out.printf("取出的数据是%d\n",i); break; case 'e': scanner.close(); loop=false; break; default: break; } } System.out.println("程序退出"); } } //用数组模拟队列-编写一个ArryaQueue类 class ArrayQueeu{ private int maxSize; //表示数组最大的容量 private int front; //队列头 private int rear; //队列尾 private int[] arr; //该数组用来存放数据模拟队列 //创建队构造器 public ArrayQueeu(int arrMaxSize){ maxSize=arrMaxSize; arr=new int[maxSize]; front=-1; //指向队列头部部,分析front指向队列的那个位置 rear=-1; //指向队尾,最后一个数据, } //判断队列是否满 public boolean isFull(){ return rear==front-1; } //判断队列是否是空 public boolean isEmpty(){ return rear==front; } //向队列中添加数据 public void addQueue(int n){ //判断队列是否堆满 if(isFull()){ System.out.println("队列满,不能添加数据"); return; } rear++; //rear向后移动 arr[rear]=n; } //获取队列数据,出数据 public int getQueue(){ //判断队列是否是空 if(isEmpty()){ //通过抛出异常 throw new RuntimeException("队列空,不能取出数据"); } front++;//front后移 return arr[front]; } //显示队列所有数据 public void showData(){ //遍历 if(isEmpty()){ System.out.println("无数据"); return; } for (int i=0;i<arr.length;i++){ System.out.printf("arr[%d]=%d\n",i,arr[i]); } } //显示队列头,注意不是取出数据 public int headQueue(){ //判断队列是否是空 if(isEmpty()){ //通过抛出异常 throw new RuntimeException("队列空,不能去数据"); } return arr[front+1]; } }
注释:这种方法存在问题,数组只能用一次
原文地址:https://www.cnblogs.com/nidegui/p/11730781.html
- mac下使用github
- CSS3新特性应用之结构与布局
- 程序猿的日常——Java基础之equals与hashCode
- 贾康:智能金融需在发展和规范中掌握理性权衡点
- Objective-C: 字符串NSString与NSMutableString
- 2017年最后一篇推送,仍然与技术有关盘点深度学习论文年度之“最”
- 【垂直居中高级篇】你不知道的垂直居中方式
- 第一个APP:IOS做简单运算的计算器
- 进程、线程、应用程序之间的关系
- CSS3新特性应用之用户体验
- 瑞波币正式超越Uber和比特币现金,市值突破590亿美元
- 程序猿的日常——JVM内存模型与垃圾回收
- 第一个只出现一次的字符
- 在字符串中删除特定的字符
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 聊聊java中的哪些Map:(四)LinkedHashMap源码分析
- CGroup 介绍
- 有赞持续集成容器化实践
- 怎么创建一个良好的Git提交信息
- Epoll 如何工作的?
- 用函数式的方式思考——递归
- Linux等待队列原理与实现
- 微信小程序switchTab带参解决方法
- 微信小程序使用腾讯文档打开文档
- Vue.js属性装饰器库vue-property-decorator文档
- Vue Class Component文档翻译
- Vue使用深度选择器在scoped中修改第三方样式
- Redis Keyspace Notifications(Redis键空间通知)
- NodeJS使用Redis键的过期回调
- 深入Linux并发同步