数据结构之队列(数据结构之队列(Java版)版)
1.队列概述队列概述:队列是一个有序表,可以用数组或链表实现(本篇讲的是用数组实现),遵循先入先出(FIFO)原则,即先存
入队列的数据,要先取出,后存入的要后取出。
2.用数组实现队列的思路用数组实现队列的思路
使用数组的声明如下图,其中MaxSize是该队列的最大容量,则MaxSize-1是队列的最大下标(因为下标是从0开始),两个
变量front及rear分别记录队列前后端的下标 ,front会随着数据输出而改变,而rear则是随着数据输入而改变。
3.队列的常见操作队列的常见操作
入队入队:在队尾存入数据称为入队,入队有两个步骤:
1)将尾指针往后移:rear+1,当front = =rear时,队列为空
2)当rear<MaxSize-1时,则将数据存入rear所指的数组元素中
当rear==MaxSize-1时,则表示队列已满
出队出队: 删除并返回队头的元素称为出队
判空判空:判断队列是否是空队列
访问队头访问队头:只显示队头元素,不取出数据
遍历队列遍历队列:输出队列中的全部元素
java代码实现
// 使用数组模拟队列-编写一个ArrayQueue类
class ArrayQueue {
private int maxSize; // 表示数组的最大容量
private int front; // 队列头
private int rear; // 队列尾
private int[] arr; // 该数据用于存放数据, 模拟队列
// 创建队列的构造器
public ArrayQueue(int arrMaxSize) {
maxSize = arrMaxSize;
arr = new int[maxSize];
front = -1; // 指向队列头部,分析出front是指向队列头的前一个位置.
rear = -1; // 指向队列尾,指向队列尾的数据(即就是队列最后一个数据)
}
// 判断队列是否满
public boolean isFull() {
return rear == maxSize - 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()) {