请编写算法实现入队和出队pta
时间: 2024-10-21 07:15:37 浏览: 24
双端队列入队出队等各种操作问题
5星 · 资源好评率100%
入队(enqueue)和出队(dequeue)操作是线性数据结构中最基本的操作之一,通常用于描述栈(stack)和队列(queue)。这里我会分别给出这两种操作的伪代码示例:
**队列(First-In-First-Out, FIFO)的实现(例如数组队列):**
```plaintext
// 队列类 Queue
class Queue {
private int[] items;
private int front; // 队头指针
private int rear; // 队尾指针
// 构造函数
Queue(int capacity) {
items = new int[capacity];
front = -1;
rear = -1;
}
// 入队操作 (enqueue)
void enqueue(int value) {
if (isFull()) {
throw new IllegalStateException("Queue is full");
}
rear = (rear + 1) % capacity; // 使用循环数组避免边界溢出
items[rear] = value;
if (front == -1) { // 如果队列为空,则更新front
front = rear;
}
}
// 出队操作 (dequeue)
int dequeue() {
if (isEmpty()) {
throw new IllegalStateException("Queue is empty");
}
int removedValue = items[front];
front = (front + 1) % capacity;
if (front == rear) { // 当队列仅剩一个元素时,调整front和rear指向同一位置
rear = front;
}
return removedValue;
}
// 判断队列是否空
boolean isEmpty() {
return front == -1;
}
// 判断队列是否满
boolean isFull() {
return rear == (front + capacity - 1) % capacity;
}
}
阅读全文