思路分析
上一讲我们讲过,队列既可以用数组来实现,也可以用链表来实现,但由于我们比较熟悉数组这种结构,所以这里我会先给大家讲一下数组这种实现方式,至于链表这种实现方式,那就以后有机会再说吧!
队列,它本身就是一个有序列表,且其若是使用数组这种结构来存储它里面的数据的话,则队列数组的声明就应该是如下图所示的这个样子,其中maxSize就是该队列的最大容量。
上面这张示意图,大家应该还有些印象吧,你可千万别跟我说不熟悉啊,因为我上一讲就已经给大家讲过了。
我不知道大家是否能从以上示意图中看出这一点,就是在使用数组模拟队列时,我们应该是要创建这样一个类的,即:
/**
* 使用数组来模拟队列
*/
class ArrayQueue {
private int[] arr; // 该数组是专门用于存放数据的
private int maxSize; // 表示数组的最大容量
private int front; // 表示队列的头指针
private int rear; // 表示队列的尾指针
......
}
不难发现,ArrayQueue
类中是必须要有以下这四个成员属性(或者成员变量)的:
private int[] arr
:由于是使用数组来模拟队列,所以在设计队列时它内部必然是要有一个数组来专门用于存放数据的;private int maxSize
:它表示的就是数组的最大容量;private int front/rear
:由于队列的输入、输出是分别从前后端来处理的,所以我们需要两个变量front
及rear
来分别记录队列前后端的下标,当然,不用说想必大家也都知道了,front
会随着数据的输出而改变,而rear
则会随着数据的输入而改变。
接着我们继续来分析一下队列里面常用的几个操作。
其实,傻傻地思考一下,你就应该知道队列里面那几个常用的操作必然是少不了这三个的,即:
- 创建队列;
- 将数据存入队列;
- 从队列中取数据。
代码实现
。。。