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