数据结构学习笔记

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

相关推荐
老鱼说AI1 天前
统计学习方法第一章讲解:统计与监督学习概率
人工智能·学习·学习方法
汉克老师1 天前
GESP6级C++考试语法知识(十七、数据结构(三、认识队列 Queue))
数据结构·c++·队列·gesp6级·gesp六级·数组模拟队列
他们叫我阿冠1 天前
Day5学习--SpringBoot详解
spring boot·后端·学习
JavaWeb学起来1 天前
Python学习教程(六)数据结构List(列表)
数据结构·python·python基础·python教程
tedcloud1231 天前
hello-agents部署教程:从零学习AI Agent开发
服务器·人工智能·学习·自动化·powerpoint
我想我不够好。1 天前
针对性抓人 随机应变
学习
OSwich1 天前
【 Godot 4 学习笔记】命名规范
笔记·学习·godot
觅_1 天前
前端学习后端的时候 选择一个技术
前端·学习
吃吃今天努力学习了吗1 天前
【大模型入门学习笔记】常见概念总结
笔记·学习
Bechamz1 天前
大数据开发学习Day39
大数据·学习