题目
模拟队列:循环数组实现入队出队
思路
本题用循环数组模拟队列的入队、出队。 结构体维护 data、front、rear、size;入队时 rear=(rear+1)%N 写入,出队时 front=(front+1)%N,用 size 判断空/满,避免与 front==rear 歧义。
解题分析
数组或 Queue:rear 入队后 (rear+1)%cap,front 出队同理。维护 size 或浪费一个槽位区分满/空。
完整程序
import java.io.*;
public class Main {
public static void main(String[] args) {
int[] q = new int[8]; int front = 0, rear = 0, size = 0;
int op = 1;
if (op == 1) {
int x = 10;
if (size < 8) {
q[rear] = x;
rear = (rear + 1) % 8;
size++;
}
} else if (op == 0) {
if (size == 0) System.out.println("empty");
else {
System.out.println(q[front]);
front = (front + 1) % 8;
size--;
}
}
int op = 1;
if (op == 1) {
int x = 20;
if (size < 8) {
q[rear] = x;
rear = (rear + 1) % 8;
size++;
}
} else if (op == 0) {
if (size == 0) System.out.println("empty");
else {
System.out.println(q[front]);
front = (front + 1) % 8;
size--;
}
}
int op = 0;
if (op == 1) {
int x = 0;
if (size < 8) {
q[rear] = x;
rear = (rear + 1) % 8;
size++;
}
} else if (op == 0) {
if (size == 0) System.out.println("empty");
else {
System.out.println(q[front]);
front = (front + 1) % 8;
size--;
}
}
int op = -1;
if (op == 1) {
int x =
if (size < 8) {
q[rear] = x;
rear = (rear + 1) % 8;
size++;
}
} else if (op == 0) {
if (size == 0) System.out.println("empty");
else {
System.out.println(q[front]);
front = (front + 1) % 8;
size--;
}
}
}
}
运行示例
输出:
10
20