📅  最后修改于: 2023-12-03 15:42:23.374000             🧑  作者: Mango
队列是计算机科学中的基本数据结构之一,它是一种先进先出(FIFO)的线性数据结构。
队列可以看作是排队的人群,第一个排队的人第一个离开队列,其他人往前挪一位,等待自己的离开队列。在计算机科学中,队列中的数据项可以是任何类型,例如数字、字符串、对象等。
队列有两个基本的操作:Enqueue和Dequeue。
队列还有其他一些常见的操作,例如IsEmpty(队列是否为空)和IsFull(队列是否已满),以及Peek(返回队列头部的元素而不删除它)。
队列可以使用不同的方法来实现,包括数组或链表等。
使用数组实现的队列被称为数组队列。在数组队列中,数据项被存储在一个数组中,然后通过指针来指定队列头和队列尾。
public class ArrayQueue {
private int front; //队列头指针
private int rear; //队列尾指针
private int capacity; //数组容量
private int[] array; //存储数据的数组
public ArrayQueue(int capacity) {
this.capacity = capacity;
front = -1;
rear = -1;
array = new int[capacity];
}
public boolean isFull() {
return rear == capacity - 1;
}
public boolean isEmpty() {
return front == -1 && rear == -1;
}
public void enqueue(int data) {
if (isFull()) {
System.out.println("队列已满,无法插入数据!");
return;
}
if (isEmpty()) {
front = 0;
rear = 0;
} else {
rear = rear + 1; //队尾指针移动
}
array[rear] = data;
}
public int dequeue() {
if (isEmpty()) {
System.out.println("队列为空,无法删除数据!");
return -1;
}
int data = array[front];
if (front == rear) { //队列中只有一个元素
front = -1;
rear = -1;
} else {
front = front + 1; //队头指针移动
}
return data;
}
public int peek() {
if (isEmpty()) {
System.out.println("队列为空,无法取出数据!");
return -1;
}
return array[front];
}
}
以上是使用Java实现的数组队列示例代码。在这个例子中,为了方便,我们使用int类型的数据项和基本的数组实现方法。实际应用中,队列可以存储任何数据类型,并且可以使用不同的算法和数据结构来实现队列。