讲师中心 微信公众号
AI工具推荐 视频效率加速

c++怎么实现一个队列_队列数据结构实现

冬丽同学_2345

冬丽同学_2345

发布时间:2025-09-29 20:36:02

|

666人浏览过

|

来源于php中文网

原创

使用数组实现循环队列,通过front和rear指针及count变量管理元素,支持入队、出队、判空/满等操作,利用取模实现循环,避免内存浪费。

c++怎么实现一个队列_队列数据结构实现

在C++中实现一个队列,可以通过数组或链表来模拟队列的先进先出(FIFO)特性。下面以数组方式实现一个简单的循环队列,包含基本操作:入队、出队、判断空/满、获取队首元素等。

1. 队列的基本结构设计

定义一个固定大小的数组用于存储元素,同时维护两个指针:front 表示队头位置,rear 表示队尾的下一个插入位置。使用循环结构可以更高效地利用空间。

代码实现如下:

立即学习“C++免费学习笔记(深入)”;

#include <iostream>
using namespace std;
<p>class Queue {
private:
int* arr;           // 存储数据的数组
int front;          // 队头索引
int rear;           // 队尾索引(指向下一个插入位置)
int capacity;       // 队列容量
int count;          // 当前元素个数</p><p>public:
// 构造函数
Queue(int size) {
capacity = size;
arr = new int[capacity];
front = 0;
rear = 0;
count = 0;
}</p><pre class='brush:php;toolbar:false;'>// 析构函数
~Queue() {
    delete[] arr;
}

// 判断队列是否为空
bool isEmpty() {
    return count == 0;
}

// 判断队列是否满
bool isFull() {
    return count == capacity;
}

// 入队(从队尾插入)
void enqueue(int value) {
    if (isFull()) {
        cout << "队列已满,无法入队!" << endl;
        return;
    }
    arr[rear] = value;
    rear = (rear + 1) % capacity;  // 循环更新rear
    count++;
}

// 出队(从队头删除)
int dequeue() {
    if (isEmpty()) {
        cout << "队列为空,无法出队!" << endl;
        return -1;  // 返回-1表示错误
    }
    int value = arr[front];
    front = (front + 1) % capacity;
    count--;
    return value;
}

// 获取队首元素
int getFront() {
    if (isEmpty()) {
        cout << "队列为空!" << endl;
        return -1;
    }
    return arr[front];
}

// 获取当前队列元素个数
int size() {
    return count;
}

};

C++14
C++14

C++14 对 C++11 的修正与增强版本,适合旧系统维护和较老工具链兼容。

下载

2. 使用示例

下面是一个简单的测试代码,演示如何使用上面实现的队列:

int main() {
    Queue q(5);  // 创建容量为5的队列
<pre class='brush:php;toolbar:false;'>q.enqueue(10);
q.enqueue(20);
q.enqueue(30);

cout << "队首元素: " << q.getFront() << endl;
cout << "队列大小: " << q.size() << endl;

cout << "出队元素: " << q.dequeue() << endl;
cout << "出队元素: " << q.dequeue() << endl;

cout << "队首元素: " << q.getFront() << endl;
cout << "队列大小: " << q.size() << endl;

return 0;

}

3. 关键点说明

循环队列的优势:避免频繁移动元素,提高效率。通过取模运算实现索引的循环使用。

count变量的作用:单独记录元素个数,使得判空和判满逻辑清晰,尤其适用于front == rear时的边界情况。

内存管理:使用动态数组,并在析构函数中释放内存,防止泄漏。

4. 扩展建议

  • 可以模板化实现,支持不同类型的数据(如 template<typename T>)
  • 使用std::vector替代原生数组,自动管理容量
  • 实现双端队列(deque)支持前后插入和删除

基本上就这些。这个实现适合学习数据结构的基础原理,实际开发中也可以直接使用 std::queue,它是STL提供的容器适配器,底层可基于 deque 或 list 实现。

相关文章

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

相关专题

更多
counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3188

2023.11.20

C++ 智能指针与现代内存管理
C++ 智能指针与现代内存管理

深入讲解 C++ 现代内存管理的核心工具——智能指针,涵盖 unique_ptr 独占所有权语义、shared_ptr 引用计数机制与循环引用问题、weak_ptr 弱引用的应用场景、make_unique/make_shared 工厂函数的性能优势、自定义删除器的编写、RAII 资源管理思想的实践,以及从裸指针迁移到智能指针的重构策略,帮助开发者编写安全无泄漏的现代 C++ 代码。

359

2026.04.23

treenode的用法
treenode的用法

​在计算机编程领域,TreeNode是一种常见的数据结构,通常用于构建树形结构。在不同的编程语言中,TreeNode可能有不同的实现方式和用法,通常用于表示树的节点信息。更多关于treenode相关问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2561

2023.12.01

C++ 高效算法与数据结构
C++ 高效算法与数据结构

本专题讲解 C++ 中常用算法与数据结构的实现与优化,涵盖排序算法(快速排序、归并排序)、查找算法、图算法、动态规划、贪心算法等,并结合实际案例分析如何选择最优算法来提高程序效率。通过深入理解数据结构(链表、树、堆、哈希表等),帮助开发者提升 在复杂应用中的算法设计与性能优化能力。

356

2025.12.22

深入理解算法:高效算法与数据结构专题
深入理解算法:高效算法与数据结构专题

本专题专注于算法与数据结构的核心概念,适合想深入理解并提升编程能力的开发者。专题内容包括常见数据结构的实现与应用,如数组、链表、栈、队列、哈希表、树、图等;以及高效的排序算法、搜索算法、动态规划等经典算法。通过详细的讲解与复杂度分析,帮助开发者不仅能熟练运用这些基础知识,还能在实际编程中优化性能,提高代码的执行效率。本专题适合准备面试的开发者,也适合希望提高算法思维的编程爱好者。

397

2026.01.06

C++ 数据结构与算法实现教程合集
C++ 数据结构与算法实现教程合集

以 C++ 为实现语言,系统讲解核心数据结构与算法,涵盖链表(单链表/双链表/环检测)、栈与队列(单调栈/优先队列)、二叉树(遍历/BST/AVL/红黑树)、哈希表(开地址法/链地址法)、图(邻接表/BFS/DFS/Dijkstra/拓扑排序)、常见排序算法(快排/归并/堆排/计数排序)的实现与复杂度分析,同时分享 LeetCode 刷题技巧、竞赛编程常用模板(二分/前缀和/滑动窗口/动态规划),帮助开发者夯实算法基础。

452

2026.05.09

Playwright 测试失败怎么办
Playwright 测试失败怎么办

Playwright测试失败专题汇集超时、定位器匹配、浏览器提前关闭、依赖与插件配置、文件上传、SSL及Docker启动等故障文章,并介绍通过截图、报告和Trace定位错误。

0

2026.10.21

Playwright 页面操作指南
Playwright 页面操作指南

Playwright页面操作专题汇集元素定位、点击与输入、等待响应、多页面切换、Iframe、事件监听及文件处理的已审核文章,便于按操作场景查阅示例与常见问题。

0

2026.10.21

Playwright 入门教程
Playwright 入门教程

Playwright入门专题汇集测试框架安装、VS Code配置、录制脚本、编写首个用例、运行调试及查看报告的已审核文章,帮助初学者搭建端到端测试流程。

0

2026.10.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C++ Core Guidelines
C++ Core Guidelines

共0课时 | 0人学习

C++ Reference
C++ Reference

共0课时 | 0人学习

C++ 官方标准说明
C++ 官方标准说明

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn