循环队列实现:C语言和Java语言示例 - 入队、出队和输出剩余元素
循环队列实现:C语言和 Java 语言示例 - 入队、出队和输出剩余元素
本文将提供 C 语言和 Java 语言实现的循环队列示例,展示如何入队、出队元素,并输出队列中剩余元素。
C语言实现
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
typedef struct {
int data[MAX_SIZE];
int front; // 队头
int rear; // 队尾
} Queue;
void initQueue(Queue *q) {
q->front = q->rear = 0;
}
int isFull(Queue *q) {
return (q->rear + 1) % MAX_SIZE == q->front;
}
int isEmpty(Queue *q) {
return q->front == q->rear;
}
void enqueue(Queue *q, int x) {
if (isFull(q)) {
printf("Queue is full.\n");
return;
}
q->data[q->rear] = x;
q->rear = (q->rear + 1) % MAX_SIZE;
}
int dequeue(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty.\n");
return -1;
}
int x = q->data[q->front];
q->front = (q->front + 1) % MAX_SIZE;
return x;
}
void printQueue(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty.\n");
return;
}
printf("Queue: ");
int i = q->front;
while (i != q->rear) {
printf("%d ", q->data[i]);
i = (i + 1) % MAX_SIZE;
}
printf("\n");
}
int main() {
Queue q;
initQueue(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
enqueue(&q, 4);
enqueue(&q, 5);
enqueue(&q, 6);
enqueue(&q, 7);
enqueue(&q, 8);
enqueue(&q, 9);
enqueue(&q, 10);
printQueue(&q);
enqueue(&q, -111);
printQueue(&q);
dequeue(&q);
dequeue(&q);
printQueue(&q);
return 0;
}
Java实现
public class Queue {
private static final int MAX_SIZE = 10;
private int[] data;
private int front; // 队头
private int rear; // 队尾
public Queue() {
data = new int[MAX_SIZE];
front = rear = 0;
}
public boolean isFull() {
return (rear + 1) % MAX_SIZE == front;
}
public boolean isEmpty() {
return front == rear;
}
public void enqueue(int x) {
if (isFull()) {
System.out.println("Queue is full.");
return;
}
data[rear] = x;
rear = (rear + 1) % MAX_SIZE;
}
public int dequeue() {
if (isEmpty()) {
System.out.println("Queue is empty.");
return -1;
}
int x = data[front];
front = (front + 1) % MAX_SIZE;
return x;
}
public void printQueue() {
if (isEmpty()) {
System.out.println("Queue is empty.");
return;
}
System.out.print("Queue: ");
int i = front;
while (i != rear) {
System.out.print(data[i] + " ");
i = (i + 1) % MAX_SIZE;
}
System.out.println();
}
public static void main(String[] args) {
Queue q = new Queue();
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
q.enqueue(4);
q.enqueue(5);
q.enqueue(6);
q.enqueue(7);
q.enqueue(8);
q.enqueue(9);
q.enqueue(10);
q.printQueue();
q.enqueue(-111);
q.printQueue();
q.dequeue();
q.dequeue();
q.printQueue();
}
}
代码说明
- 循环队列使用数组实现,通过
front和rear指针来维护队头和队尾位置。 enqueue操作:将元素添加到队尾,rear指针后移。dequeue操作:从队头取出元素,front指针后移。isFull和isEmpty函数用于判断队列是否已满或为空。printQueue函数用于打印队列中所有元素。
代码示例
以上代码演示了如何创建一个循环队列,并进行入队、出队和输出剩余元素的操作。您可以根据自己的需要修改代码,例如调整队列大小、数据类型等。
总结
本文详细介绍了循环队列的概念以及使用 C 语言和 Java 语言实现循环队列的示例代码。希望本文能够帮助您理解循环队列的原理,并能够在实际应用中灵活运用循环队列。
原文地址: https://www.cveoy.top/t/topic/kfQN 著作权归作者所有。请勿转载和采集!