数据结构学习笔记

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++ 各类数据结构的洛谷刷题适配清单,方便你针对性练习?

相关推荐
西岸行者2 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
琢磨先生David3 天前
Day1:基础入门·两数之和(LeetCode 1)
数据结构·算法·leetcode
starlaky3 天前
Django入门笔记
笔记·django
勇气要爆发3 天前
吴恩达《LangChain LLM 应用开发精读笔记》1-Introduction_介绍
笔记·langchain·吴恩达
悠哉悠哉愿意3 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
qq_454245033 天前
基于组件与行为的树状节点系统
数据结构·c#
超级大福宝3 天前
N皇后问题:经典回溯算法的一些分析
数据结构·c++·算法·leetcode
勇气要爆发3 天前
吴恩达《LangChain LLM 应用开发精读笔记》2-Models, Prompts and Parsers 模型、提示和解析器
android·笔记·langchain
别催小唐敲代码3 天前
嵌入式学习路线
学习
岛雨QA3 天前
常用十种算法「Java数据结构与算法学习笔记13」
数据结构·算法