[TOC] 1. 简介 队列是一个有序列表,可以用数组或是链表来实现。 遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出 示意图:(使用数组模拟队列示意图) 2. 数组模拟队列 实现思路 队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的
一、front就指向队列的第一个元素,也就是说,arr[front]就是队列的第一个元素 二、rear就是指向队列的最后一个元素的后一个位置,我们需要空出这个rear指向的空间(牺牲这个空间) 三、现在环形队列中,当队列满时,条件为:( rear + 1 ) % maxSize == front 原本非环队列满的条件是 rear = maxSize - 1 我...
private int maxSize; // 表示数组的最大容量 //front 变量的含义做一个调整: front 就指向队列的第一个元素, 也就是说 arr[front] 就是队列的第一个元素 //front 的初始值 = 0 private int front; //rear 变量的含义做一个调整:rear 指向队列的最后一个元素的后一个位置. 因为希望空出一个空间做为...
我们可以想象成在这个数组的后面又增加了一个数组,数组的索引要从0开始。如下图所示 image.png 那么这个时候我们再计算有效数据个数的话就是:队尾指针+数组长度-队头。 综合以上两种情况,我们就可以得出(队尾 + 数组长度 - 队头)% 数组长度就是有效数据的个数。 环形数组队列的实现 下面就上面讲的两种方式我...
/*使用数组模拟环形队列的思路分析 思路如下: 1.front变量的定义做一个调整:front指向队列的第一个元素,也就是说arr[front]就是队列的第一个元素 front的初始值为0 2.rear变量的含义做一个调整:rear指向队列的的最后一个元素的后一个位置,因为希望空出一个空间作为约定 ...
环形展开成链表,在链表上模拟环形队列; head 和tail只增不减,add 、remove、size都很好理解; 初始容量是2的n次方; PS,优秀的数据结构肯定是结构和数据都很巧妙的~ publicclassCirQueue{Integer[]container;//head指向next坑位inthead=0;//tail指向最后一个有效坑位inttail=-1;intsize=4;publicCirQueue(){//...
1)目前数组使用一次就不能用, 没有达到复用的效果 2)将这个数组使用算法,改进成一个环形的数组取模:% 实现: 定义队列类 private int maxSize;//数组的最大容量 private int front;//头结点,初始值为0,指向队列的第一个元素 private int read;//尾结点,初始值为0,指向元素的最后一个元素的后一个位置 ...
代码实现: import java.util.Scanner;publicclassCircleArrayQueueDemo{publicstaticvoidmain(String[] args){//测试一把System.out.println("测试数组模拟环形队列的案例~~~");// 创建一个环形队列CircleArray queue =newCircleArray(4);//说明设置4, 其队列的有效数据最大是3charkey =' ';// 接收用户输入Sca...
若用一个大小为6的数组来实现环形队列,队头指针front指向队列中队头元素的前一个位置,队尾指针rear指向队尾元素的位置。若当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为 。 A. 1和5 B. 2和4 C. 4和2 D. 5和1 ...
简介:数组实现环形队列(Java) 实现思路: front表示指向队列第一个元素,初始化为0。 rear表示指向队列最后一个元素的后一个位置,初始化为0。 数组实现环形队列需要预留一个空位置(不放元素)。 当队列已满时,满足:(rear + 1) % capacity == front