环形数组实现队列问题(利用基础算法实现)

您所在的位置:网站首页 设计一个算法将一个环形队列的元素倒置 环形数组实现队列问题(利用基础算法实现)

环形数组实现队列问题(利用基础算法实现)

2024-07-10 13:57| 来源: 网络整理| 查看: 265

环形数组实现队列问题 分析

一、对题目的分析都写在了后面的代码中注释过了 二、如果有更好的解决方案,欢迎指出 三、注:对于基础算法,取模很关键(%)

相关算法分析

直观图片

相关代码实现

一、方法的设计类:

public class CircleArray { private int maxSize; //数组的长度(最大容量) //front--rear的初始值均为0 private int front; //front指向队列的第一个元素, private int rear; //rear指向队列的最后一个元素的后一个位置,相当于始终空一个存储位置 private int[] arr; public CircleArray(int arrMaxSize) { maxSize = arrMaxSize; //front--rear也可以不用赋值,因为默认为0 front = 0; rear = 0; arr = new int[maxSize]; } //判断这个环形队列是否满 public boolean isFull() { return (rear+1)%maxSize == front; } //判断这个环形队列是否为空 public boolean isEmpty(){ return rear == front; } //向环形队列里面添加数据 public void addCircleArray(int value) { if(isFull()) { //用了抛出异常这个操作,不用再写return,自带结束功能 throw new RuntimeException("环形队列已满,不能添加数据"); } //因为本身指向了后一个元素,直接添加数据就可。(前面定义已经约定) arr[rear] = value; //将rear后移,因为是环形数组,考虑取模(%)这样就可以形成一个环形结构 rear = (rear+1)%maxSize; } //获取队列的数据,出队列 public int getCircleArray() { if(isEmpty()) { throw new RuntimeException("队列已满,没有数据出队列"); } /**分析出front是指向队列的第一个元素 * 1.先把front对应的值保存到一个临时变量 * 2。将front后移,取模 * 3.将临时保存的变量返回 */ int values = arr[front]; front = (front+1)%maxSize; return values; } //显示队列数据 public void showCircleArray() { if(isEmpty()) { throw new RuntimeException("队列为空,没有数据可供你展示"); } /** * 1.从front开始遍历; * 2. */ for(int i = 0;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3