目录
概念与结构
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)
入队列:进行插入操作的一端称为队尾
出队列:进行删除操作的一端称为队头
实现一个队列
创建一个队列类
maxSize
表示队列的最大容量,front
表示队头的位置,rear
表示队尾的位置,queueArray
是一个整数数组,用于存储队列中的元素。
public class MyQueue {
private int maxSize;
private int front;
private int rear;
private int[] queueArray;
public MyQueue(int size) {
maxSize = size;
queueArray = new int[maxSize];
front = 0;
rear = -1;
}
}
实现队列的基本操作
包括入队(enqueue)、出队(dequeue)和查看队头元素(peek)。
// 判断是否为空
public boolean isEmpty(){
return rear == -1;
}
// 判断是否已满
public boolean isFull(){
return rear == maxSize - 1;
}
// 入队
public void enqueue(int value){
if(!isFull()){
rear++;
queueArray[rear] = value;
}else {
System.out.println("队列已满,无法添加新元素");
}
}
// 出队
public int dequeue(){
if(!isEmpty()){
int temp = queueArray[front];
front++;
return temp;
}else {
System.out.println("队列为空,无法弹出元素");
return -1;
}
}
// 队首
public int peek(){
if(!isEmpty()){
return queueArray[front];
}else {
System.out.println("队列为空,无法弹出元素");
return -1;
}
}
测试队列类
public class Main {
public static void main(String[] args) {
MyQueue queue = new MyQueue(5);
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
queue.enqueue(4);
queue.enqueue(5);
System.out.println("队头元素:" + queue.peek()); // 输出:队头元素:1
System.out.println("出队元素:" + queue.dequeue()); // 输出:出队元素:1
System.out.println("出队元素:" + queue.dequeue()); // 输出:出队元素:2
System.out.println("队头元素:" + queue.peek()); // 输出:队头元素:3
}
}