C++实现顺序队列:从初始化到释放的完整示例及注意要点
sqqueue.cpp ```cpp #include <iostream> const int MaxSize = 100; // 定义队列的最大容量 // 定义队列结构体 typedef struct { char data[MaxSize]; // 存储队列元素的数组 int front, rear; // 队头和队尾指针 } SqQueue; // 初始化队列 void InitQueue(SqQueue &q) { q.front = q.rear = 0; // 队头和队尾指针都初始化为0 } // 判断队列是否为空 bool QueueEmpty(SqQueue q) { return q.front == q.rear; // 队头和队尾指针相等时队列为空 } // 进队列操作 bool EnQueue(SqQueue &q, char e) { if ((q.rear + 1) % MaxSize == q.front) // 队列满的判断条件 return false; q.data[q.rear] = e; // 将元素e放入队尾 q.rear = (q.rear + 1) % MaxSize; // 队尾指针后移 return true; } // 输出队列序列 void PrintQueue(SqQueue q) { int i = q.front; while (i != q.rear) { std::cout << q.data[i] << " "; // 输出队列元素 i = (i + 1) % MaxSize; // 指针后移 } std::cout << std::endl; } // 释放队列(在顺序队列中,由于使用数组,不需要额外释放操作) void DestroyQueue(SqQueue &q) { // 重置队头和队尾指针 q.front = q.rear = 0; } ``` exp3-10.cpp ```cpp #include <iostream> #include "sqqueue.cpp" int main() { SqQueue q; // (1)初始化队列q InitQueue(q); // (2)判断队列q是否为空 if (QueueEmpty(q)) std::cout << "队列q为空" << std::endl; else std::cout << "队列q不为空" << std::endl; // (3)依次进队列元素a、b、c、d、e EnQueue(q, 'a'); EnQueue(q, 'b'); EnQueue(q, 'c'); EnQueue(q, 'd'); EnQueue(q, 'e'); // (4)判断队列q是否为非空 if (!QueueEmpty(q)) std::cout << "队列q非空" << std::endl; else std::cout << "队列q为空" << std::endl; // (5)输出队列序列 std::cout << "队列序列为: "; PrintQueue(q); // (6)判断队列q是否为非空 if (!QueueEmpty(q)) std::cout << "队列q非空" << std::endl; else std::cout << "队列q为空" << std::endl; // (7)释放队列 DestroyQueue(q); return 0; } ``` 额外需要注意的逻辑点 1. 顺序队列的判满条件是`(q.rear + 1) % MaxSize == q.front`,要理解这种循环队列的判满方式,避免队列溢出。 2. 进队列和出队列操作时,队头和队尾指针的移动要使用`(i + 1) % MaxSize`,以实现循环队列的功能。 3. 顺序队列使用数组存储元素,在释放队列时,只需要重置队头和队尾指针,不需要进行额外的内存释放操作。 ######[AI写代码神器 | 874点数解答 | 2025-06-07 20:13:32]
- Java实现链表反转:迭代与递归双解法详解及开发实战指南(DeepSeek | 1409点数解答 | 2026-03-15 15:09:29)50
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)365
- 工程师必知:软件系统用户文档编写九大要点揭秘(百度文心 | 350点数解答 | 2023-11-09 18:23:53)209
- C++ 实现我的世界基岩版:从简单框架到开发要点揭秘(字节豆包 | 182点数解答 | 2025-02-22 15:53:11)210
- 重新定义字母大小关系:让 “L 队” 字典序小于 “某 E” 的代码实现与分析(字节豆包 | 595点数解答 | 2025-12-03 19:44:59)77
- 深入解析格雷码生成算法:递归求解与代码实现(DeepSeek | 443点数解答 | 2026-01-05 12:21:49)69
- C++ 实现完整斗地主:含洗牌、发牌与手牌展示,可按需扩展!(字节豆包 | 1028点数解答 | 2026-01-10 08:02:37)52
- 探寻数组中最长摆动子序列长度:思路剖析与代码优化(GPT | 758点数解答 | 2024-12-23 23:18:29)285
- 独家剖析:求解数组最长摆动子序列长度的代码实现与改进建议(GPT | 350点数解答 | 2024-12-23 23:20:54)282
- C#工程师必知:数组、链表、哈希、队列、栈数据结构优缺点大揭秘! (百度文心 | 561点数解答 | 2023-11-09 17:56:30)274
- 揭秘!十进制整数转其他进制用啥存储结构最合适?答案竟是它!(字节豆包 | 57点数解答 | 2024-11-13 01:21:11)253
- Java 实现仿 Windows 资源管理器:文件管理器功能全解析与代码示例(字节豆包 | 623点数解答 | 2025-01-01 14:59:04)268