2.1数据结构与算法学习笔记:环形队列
2020-07-14 06:18
232 查看
环形队列
//测试数组模拟环形队列 public class hxdl { public static void main(String[] args) { hx h = new hx(3); char key = ' ';//接受用户输入 Scanner scanner = new Scanner(System.in); boolean loop = true; //输出一个菜单 while (loop) { key = scanner.next().charAt(0);//接受一个字符 switch (key) { case 'a': System.out.println("输入一个数"); int value = scanner.nextInt(); h.addQueue(value); break; case 'g'://取出数据 try { int queue = h.getQueue(); System.out.printf("取出的数据是%d\n", queue); } catch (Exception e) { System.out.println(e.getMessage()); } break; } } }} //编写一个类,使用数组模拟队列 class hx { private int zdrl;//表示数组的最大容量 private int dlt;//队列头 private int dlw;//队列尾 private int[] sz;//该数组用于存放数据,模拟队列 //创建队列的构造器 public hx(int szzdrl) { zdrl = szzdrl;//数组的最大长度就是队列的最大长度 sz = new int[zdrl];//创建一个最大长度和队列的最大长度相等的数组 dlt = 0;//指向队列头部,这个dlt是指向队列头 dlw = 0;//指向最后一个数据的后一个位置 } //判断队列是否满 public boolean isFull() { //刚开始dlw和dlt都等于-1,插入一个值之后队列尾=0,头部依然为-1 //如果队列有8个值,那么dlw=7,最大容量=8 return (dlw+1)%zdrl == dlt; } //判断队列是否为空 public boolean isEmpty() { //刚开始dlw和dlt都等于-1,此时队列为空 return dlw == dlt; } //添加数据到队列 public void addQueue(int n) { //每当添加一个数据进队列时,如果队列满了,提示队列满,不能加入数据 if(isFull()){ System.out.println("队列满,不能加入数据!"); return; } //每当添加一个数据进队列时,如果队列没有满,队列尾指针往后移一位,添加一个数据进队列 System.out.println("队列尾部指针指向:"+dlw+"队列头指针指向:"+dlt); sz[dlw]=n; //当插入第一个数据的时候,插入的数据的索引为0,所以尾指针就在后一位也就是1,dlw= 0+1%3=1, dlw=(dlw+1)%zdrl; } //获取队列的数据,出队列 public int getQueue() { //每当让一个数据进队列时,如果队列是空的,则提示队列空,不能取数据 if (isEmpty()) { //通过抛出异常处理 System.out.println("队列尾部指针指向:"+dlw+"队列头指针指向:"+dlt); throw new RuntimeException("队列空,不能取数据"); } //取出队列头的数据 int value= sz[dlt]; //dlt=1%3=1,取出的数据索引为头指针(先进先出,所以肯定先取开头的数据),此时队列的头指针+1 dlt=(dlt+1)%zdrl; return value; } }
相关文章推荐
- 【Java数据结构学习笔记之三】Java数据结构与算法之队列(Queue)实现
- Java尚硅谷数据结构与算法学习记录(2)-数组模拟队列、环形队列
- 【算法导论】学习笔记——第10章 基本数据结构
- 数据结构和算法学习笔记
- 算法学习笔记--背包、队列、栈(1)
- 数据结构和算法学习(一)线性表、栈和队列
- 数据结构学习笔记——优先级队列
- 数据结构学习笔记 --- 队列(循环队列-队列的顺序表示和实现)
- 数据结构&算法学习笔记: 归并排序
- 数据结构学习笔记6(队列)
- 【算法学习笔记】79.STL 优先队列 模拟法 SJTU OJ 4012 合并果子
- 数据结构学习笔记 --- 线性表 (一些常见的关于链表的算法和面试题)
- 【算法学习笔记】06.数据结构基础 队列与堆栈初步
- Javascript数据结构与算法学习笔记——数组
- python数据结构学习笔记-2016-11-05-02-优先级队列
- 数据结构学习笔记----循环队列
- 【黑马程序员-学习笔记】数据结构-栈与队列
- 数据结构与算法学习笔记02_3(线性表)
- 算法设计和数据结构学习_4(《数据结构和问题求解》part4笔记)
- 严蔚敏版数据结构学习笔记(4):队列