当前位置:首页 > C++ > 正文

C++顺序队列实现详解(从零开始掌握队列数据结构)

在学习数据结构的过程中,队列是一种非常基础且重要的线性结构。它遵循“先进先出”(FIFO, First In First Out)的原则,就像我们在超市排队结账一样:先来的人先被服务。

本文将带你一步步用 C++语言 实现一个顺序队列(即基于数组的队列),即使你是编程小白,也能轻松理解!我们将围绕 C++顺序队列实现 这一核心主题,详细讲解原理、设计思路和完整代码。

什么是顺序队列?

顺序队列是使用数组作为底层存储结构的队列。它有两个关键指针:

  • front:指向队头元素(即将被取出的元素)
  • rear:指向队尾元素的下一个位置(新元素将插入的位置)
C++顺序队列实现详解(从零开始掌握队列数据结构) C++顺序队列实现 顺序队列C++代码 队列数据结构C++ C++队列入门教程 第1张

需要注意的是,顺序队列存在“假溢出”问题——即数组还有空位,但由于 rear 已到末尾而无法继续入队。为简化入门理解,本文先实现基础版本,后续可升级为循环队列解决该问题。

C++顺序队列实现步骤

我们将创建一个 SeqQueue 类,包含以下功能:

  • 初始化队列
  • 判断队列是否为空/满
  • 入队(enqueue)
  • 出队(dequeue)
  • 获取队头元素

1. 定义类结构

#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();         // 获取队头元素};

2. 实现成员函数

// 构造函数:初始化队列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];}

3. 测试代码

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,但在学习阶段手动实现能极大加深对数据结构的理解!