数据结构学习笔记

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

"一、 线性结构"
数据元素呈一对一的线性关系,实现方式以原生语法或标准库容器为主。
"数组"
实现:原生数组 type arrN、"标准库 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节点,包含字符数据 + 子节点指针数组(或哈希表),用于字符串高效检索。
"三、 图形结构"
数据元素呈多对多的网状关系,实现方式以邻接表或邻接矩阵为主。
"邻接矩阵实现"
方式:用二维数组 graphNN,graphij 表示节点i和j是否有边(有权值则存权值),适合稠密图。
"邻接表实现"
方式:用vector<vector<int>>(或vector<list<int>>),graphi 存储与节点i相邻的所有节点,适合稀疏图。
要不要我帮你整理C++ 各类数据结构的洛谷刷题适配清单,方便你针对性练习?

相关推荐
小弥儿5 小时前
开源 VoiceStudio,声音克隆|配音|有声书一站式本地完成
学习·开源·github
点心的游戏开发世界8 小时前
Unity C# 脚本学习笔记:命名空间与 using
学习·unity·c#
香芋芋圆9 小时前
AI 冲击内卷之下,普通前端如何破局?WebGIS—— 低门槛突围赛道
前端·javascript·人工智能·学习·职场发展
INS_KF9 小时前
【编程笔记】成员函数中两个 const 的区别(const Data &getData() const;)
前端·javascript·笔记
点心的游戏开发世界9 小时前
Unity C# 脚本学习笔记:泛型
学习·unity·c#
tju新生代魔迷11 小时前
Verilog HDL 学习笔记(十三)| 第13章 编程语言接口(PLI)
笔记·学习
kiracrimson12 小时前
从缓存的角度看链表与线性表的差异
数据结构·链表·缓存
点心的游戏开发世界12 小时前
UnityShaderGraph滚动UV笔记
笔记·uv
瑞码空间12 小时前
git知识点黄金笔记
笔记·git·elasticsearch
我爱cope13 小时前
【计算机网络 | 网络层11:ICMP 协议:Ping 和 Traceroute 的底层原理】
网络·学习·计算机网络