C语言实现环形队列基本运算:从初始化到释放全流程示例
这是一个使用C语言实现的环形队列的基本运算的示例。首先,我们需要定义环形队列的数据结构,然后实现相应的操作函数。 ```c #include <stdio.h> #include <stdlib.h> #define MAX_SIZE 10 // 环形队列的最大容量 typedef struct { char data[MAX_SIZE]; int front; int rear; } SqQueue; // 初始化队列 void InitQueue(SqQueue *q) { q->front = q->rear = 0; } // 判断队列是否非空 int QueueEmpty(SqQueue q) { return q.rear == q.front; } // 入队 void EnQueue(SqQueue *q, char e) { if ((q->rear + 1) % MAX_SIZE == q->front) { // 队列满,不入队 printf("Queue is full.\n"); return; } q->data[q->rear] = e; q->rear = (q->rear + 1) % MAX_SIZE; } // 出队 char DeQueue(SqQueue *q) { if (QueueEmpty(*q)) { // 队列空,无法出队 printf("Queue is empty.\n"); return '\0'; } char e = q->data[q->front]; q->front = (q->front + 1) % MAX_SIZE; return e; } // 打印队列 void PrintQueue(SqQueue q) { int i = q.front; while (i != q.rear) { printf("%c ", q.data[i]); i = (i + 1) % MAX_SIZE; } printf("\n"); } // 主函数 int main() { SqQueue q; InitQueue(&q); // (2) 判断队列是否非空 printf("Is queue empty? %s\n", QueueEmpty(q) ? "Yes" : "No"); // (3) 依次进队元素a、b、c EnQueue(&q, 'a'); EnQueue(&q, 'b'); EnQueue(&q, 'c'); // (4) 出队一个元素,输出该元素 printf("Dequeued element: %c\n", DeQueue(&q)); // (5) 依次进队元素d、e、f EnQueue(&q, 'd'); EnQueue(&q, 'e'); EnQueue(&q, 'f'); // (6) 输出出队序列 printf("Dequeue sequence: "); while (!QueueEmpty(q)) { printf("%c ", DeQueue(&q)); } // (7) 释放队列(实际上无需释放,因为是静态内存) return 0; } ``` 这个程序首先初始化一个环形队列,然后进行一系列的入队、出队和打印操作。注意,由于我们使用的是静态内存,所以不需要显式地释放队列。在实际应用中,如果使用动态内存,记得在适当的地方释放。 ######[AI写代码神器 | 674点数解答 | 2024-07-21 14:35:39]
- Java实现链表反转:迭代与递归双解法详解及开发实战指南(DeepSeek | 1409点数解答 | 2026-03-15 15:09:29)24
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)345
- 探寻数组中最长摆动子序列长度:思路剖析与代码优化(GPT | 758点数解答 | 2024-12-23 23:18:29)267
- 独家剖析:求解数组最长摆动子序列长度的代码实现与改进建议(GPT | 350点数解答 | 2024-12-23 23:20:54)263
- 工程师必知!Monkey 流程助力软件稳定性与可靠性提升(百度文心 | 388点数解答 | 2023-11-09 18:28:07)287
- 工程师揭秘:重要 APP 从需求到上线全流程攻略(百度文心 | 334点数解答 | 2023-11-09 18:31:47)285
- “才女”技能揭秘:用牌时可跨类型出牌!(字节豆包 | 43点数解答 | 2025-07-31 10:26:35)183
- “才女”技能揭秘:使用规则与开发注意要点大曝光! (DeepSeek | 98点数解答 | 2025-10-02 14:38:59)106
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)314
- C#工程师必知:数组、链表、哈希、队列、栈数据结构优缺点大揭秘! (百度文心 | 561点数解答 | 2023-11-09 17:56:30)264
- 揭秘!十进制整数转其他进制用啥存储结构最合适?答案竟是它!(字节豆包 | 57点数解答 | 2024-11-13 01:21:11)236
- Java 实现仿 Windows 资源管理器:文件管理器功能全解析与代码示例(字节豆包 | 623点数解答 | 2025-01-01 14:59:04)250