数据结构学习笔记

C++ 中常用数据结构可分为线性结构、树形结构、图形结构三大类,各类别包含的结构及实现方式如下:

"一、 线性结构"
数据元素呈一对一的线性关系,实现方式以原生语法或标准库容器为主。
"数组"
实现:原生数组 type arr[N]、"标准库 std::array(固定大小)/std::vector(动态大小)"。
"链表"
实现:自定义struct节点(数据域 + 指针域),手动管理指针;标准库std::vector(动态大小) / std::list(双向链表)/std::forward_list(单向链表)。
"栈"
实现:基于std::vector/std::deque封装;"标准库std::stack容器适配器(默认底层std::deque)"。
"队列"
实现:基于std::deque/std::list封装;"标准库std::queue(普通队列)、std::priority_queue(优先级队列,底层默认堆)"。
"二、 树形结构"
数据元素呈一对多的层次关系,实现方式以自定义结构体 + 指针为主,部分可借助标准库。
"普通二叉树"
实现:自定义struct节点,包含数据域 + 左 / 右孩子指针,手动构建树结构。
"二叉搜索树(BST)"
实现:基于普通二叉树扩展,添加插入、删除、查找的规则(左子树值 < 根 < 右子树值)。
"平衡树(红黑树 / AVL 树)"
实现:自定义结构体实现复杂的旋转平衡逻辑;标准库std::map/std::set底层是红黑树,可直接使用。
"堆"
实现:基于数组模拟完全二叉树结构;"标准库std::priority_queue直接提供堆功能"。
"字典树(Trie 树)"
实现:自定义struct节点,包含字符数据 + 子节点指针数组(或哈希表),用于字符串高效检索。
"三、 图形结构"
数据元素呈多对多的网状关系,实现方式以邻接表或邻接矩阵为主。
"邻接矩阵实现"
方式:用二维数组 graph[N][N],graph[i][j] 表示节点i和j是否有边(有权值则存权值),适合稠密图。
"邻接表实现"
方式:用vector<vector<int>>(或vector<list<int>>),graph[i] 存储与节点i相邻的所有节点,适合稀疏图。
要不要我帮你整理C++ 各类数据结构的洛谷刷题适配清单,方便你针对性练习?

相关推荐
skilllite作者13 小时前
Warp 新手极速上手与部署指南
java·前端·笔记·安全·agentskills
努力努力再努力FFF13 小时前
运维工程师想学习AI来提升系统自动化水平,该怎么切入?
运维·人工智能·学习
木木_王13 小时前
嵌入式Linux学习 | 数据结构(Day06)全解:线性表 + 栈队列 + 静态库 / 动态库(原理 + 代码 + 编译实战 + 易错点)
linux·数据结构·笔记·学习
-Springer-13 小时前
STM32 学习 —— 个人学习笔记11-2(SPI 通信外设 & 硬件 SPI 读写 W25Q64)
笔记·stm32·学习
中屹指纹浏览器13 小时前
浏览器指纹内核级篡改技术实现与风险防御
经验分享·笔记
@小码农13 小时前
2026年信息素养大赛【星火征途】图形化编程复赛和决赛模拟题B
开发语言·数据结构·c++·算法
人道领域13 小时前
【LeetCode刷题日记】347.前k个高频元素
java·数据结构·算法·leetcode
天天爱吃肉821813 小时前
笔记:同步电机调试时电角度校正方法说明
大数据·人工智能·笔记·功能测试·嵌入式硬件·汽车
念恒1230613 小时前
Python(简单判断) —— 从 if 开始
python·学习
此生决int13 小时前
快速复习之数据结构篇——链表
数据结构·链表