在学习数据结构的过程中,队列是一种非常基础且重要的线性结构。它遵循“先进先出”(FIFO, First In First Out)的原则,就像我们在超市排队结账一样:先来的人先被服务。
本文将带你一步步用 C++语言 实现一个顺序队列(即基于数组的队列),即使你是编程小白,也能轻松理解!我们将围绕 C++顺序队列实现 这一核心主题,详细讲解原理、设计思路和完整代码。
顺序队列是使用数组作为底层存储结构的队列。它有两个关键指针:

需要注意的是,顺序队列存在“假溢出”问题——即数组还有空位,但由于 rear 已到末尾而无法继续入队。为简化入门理解,本文先实现基础版本,后续可升级为循环队列解决该问题。
我们将创建一个 SeqQueue 类,包含以下功能:
#include <iostream>#include <stdexcept>const int MAX_SIZE = 100; // 队列最大容量class SeqQueue {private: int data[MAX_SIZE]; // 存储队列元素的数组 int front; // 队头指针 int rear; // 队尾指针public: SeqQueue(); // 构造函数 bool isEmpty(); // 判断是否为空 bool isFull(); // 判断是否为满 void enqueue(int value); // 入队 int dequeue(); // 出队 int getFront(); // 获取队头元素};
// 构造函数:初始化队列SeqQueue::SeqQueue() { front = 0; rear = 0;}// 判断队列是否为空bool SeqQueue::isEmpty() { return front == rear;}// 判断队列是否为满bool SeqQueue::isFull() { return rear == MAX_SIZE;}// 入队操作void SeqQueue::enqueue(int value) { if (isFull()) { throw std::overflow_error("Queue is full!"); } data[rear] = value; rear++;}// 出队操作int SeqQueue::dequeue() { if (isEmpty()) { throw std::underflow_error("Queue is empty!"); } int value = data[front]; front++; return value;}// 获取队头元素(不出队)int SeqQueue::getFront() { if (isEmpty()) { throw std::underflow_error("Queue is empty!"); } return data[front];}
int main() { SeqQueue q; // 入队测试 q.enqueue(10); q.enqueue(20); q.enqueue(30); std::cout << "队头元素: " << q.getFront() << std::endl; // 出队测试 std::cout << "出队: " << q.dequeue() << std::endl; std::cout << "出队: " << q.dequeue() << std::endl; // 再次入队 q.enqueue(40); std::cout << "当前队头: " << q.getFront() << std::endl; return 0;}
运行结果应为:
队头元素: 10出队: 10出队: 20当前队头: 30
通过本教程,你已经掌握了 C++顺序队列实现 的基本方法。这个实现虽然简单,但清晰展示了队列的核心操作逻辑。对于初学者来说,这是理解 队列数据结构C++ 应用的重要一步。
不过要注意,这种基础顺序队列存在空间浪费问题(前面出队后留下的空位无法再利用)。下一步你可以尝试实现循环队列(Circular Queue),通过取模运算让 rear 和 front 在数组中循环移动,从而高效利用空间。
希望这篇 C++队列入门教程 能帮助你打下坚实基础!如果你正在寻找一份清晰的 顺序队列C++代码 示例,现在你已经有了一个完整、可运行的版本。
小提示:实际项目中,建议使用 C++ 标准库中的 std::queue,但在学习阶段手动实现能极大加深对数据结构的理解!
本文由主机测评网于2025-12-28发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/20251213330.html