写一个简单的循环队列 c语言你实现的这个代码是从哪儿来的
以下是一个简单的循环队列的C语言实现:
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 5
typedef struct {
int* data;
int front;
int rear;
int size;
} Queue;
void initialize(Queue* queue) {
queue->data = (int*)malloc(MAX_SIZE * sizeof(int));
queue->front = -1;
queue->rear = -1;
queue->size = 0;
}
int isEmpty(Queue* queue) {
return queue->size == 0;
}
int isFull(Queue* queue) {
return queue->size == MAX_SIZE;
}
void enqueue(Queue* queue, int value) {
if (isFull(queue)) {
printf("Queue is full. Cannot enqueue.\n");
return;
}
if (isEmpty(queue)) {
queue->front = 0;
queue->rear = 0;
} else {
queue->rear = (queue->rear + 1) % MAX_SIZE;
}
queue->data[queue->rear] = value;
queue->size++;
}
int dequeue(Queue* queue) {
if (isEmpty(queue)) {
printf("Queue is empty. Cannot dequeue.\n");
return -1;
}
int value = queue->data[queue->front];
if (queue->front == queue->rear) {
queue->front = -1;
queue->rear = -1;
} else {
queue->front = (queue->front + 1) % MAX_SIZE;
}
queue->size--;
return value;
}
void printQueue(Queue* queue) {
if (isEmpty(queue)) {
printf("Queue is empty.\n");
return;
}
printf("Queue: ");
int i = queue->front;
while (i != queue->rear) {
printf("%d ", queue->data[i]);
i = (i + 1) % MAX_SIZE;
}
printf("%d\n", queue->data[i]);
}
int main() {
Queue queue;
initialize(&queue);
enqueue(&queue, 10);
enqueue(&queue, 20);
enqueue(&queue, 30);
printQueue(&queue);
dequeue(&queue);
printQueue(&queue);
enqueue(&queue, 40);
enqueue(&queue, 50);
printQueue(&queue);
enqueue(&queue, 60);
dequeue(&queue);
printQueue(&queue);
return 0;
}
这段代码是由OpenAI的GPT模型生成的,模型通过学习大量的文本数据得到了对编程知识的理解,并且可以根据问题提供相应的代码实现
原文地址: https://www.cveoy.top/t/topic/h3wx 著作权归作者所有。请勿转载和采集!