从数据结构说起(一)

1 揭开数据结构神奇的面纱

1.1 初识数据结构

在C++的标准库模板(Standard Template Library,STL)课程上,我初次结识了《数据结构》。C++语言提供的标准库模板是面向对象程序设计与泛型程序设计思想相结合的典范。所谓的泛型编程就是编写不依赖于具体数据类型的程序。

STL容器的底层实现依赖于数据结构。向量(vector)是一种顺序容器,可视为一种动态数组。集合(set)和映射(map)的底层是用红黑树(Red Black Tree)实现的。无序集合(unordered set)和无序映射(unordered map)的底层是哈希表(hash table)实现的。从上面的分析可以看出,STL容器的实现依赖了大量的数据结构。

作为面向对象程序设计的经典,C++的标准库模板封装了大量的数据结构。数据结构知识的匮乏可能会导致STL理解的困难。笔者认为,在学习STL这一部分的内容之前,读者应该对数据结构有一个基本的认识。


1.2 数据结构的学习

在搜索引擎上搜索"如何学习数据结构",网友不是给你推荐五花八门的书籍,就是给你推荐各种刷题技巧。对于一个初学者来说,最重要的是掌握数据结构的基本原理。如若拘泥于各种繁杂是数学推导,那么你在学习了几节之后变会觉得索然无味,书籍也自然而然地束之高阁了。

对于初学者,笔者比较推荐通过网络视频来学习。笔者比较推荐电子科技大学戴波老师的数据结构与算法慕课课程,该课程讲解深入浅出,并且给出了大量的实现代码。想了解更多数据结构知识,推荐读者阅读数据结构与算法教程

在学习完成基础课程之后,读者可以在解锁leetcode刷题网站,强烈建议读者从探索板块的数据结构专栏开始刷题。通过大量的联系,我相信读者对数据结构的理解一定会更加深入,编程能力亦能极大地提高。

1.3 数据结构知识体系

数据结构是带有结构的数据原始的集合。数据结构有两大用途:(1)用于存放要处理的数据;(2)用于实现的算法策略。数据结构可由一个四元组组成:

上式表示数据结构由数据原始、数据原始之间的逻辑关系、逻辑关系在计算机中的存储表示及所规定的操作组成。

按照逻辑结构,数据结构可以分为线性结构、树形结构、图形结构和结合结构等。下图为逻辑结构分类示意图。

逻辑结构分类示意图

按照存储结构,数据结构可分为顺序存储、链式存储和哈希存储等。顺序存储结构:把逻辑上相邻的元素存储在物理位置相邻的存储单元中。链式存储结构:在数据元素中添加一些地址或辅助结构,用于存储数据原始之间的关系。下图反映了数据的逻辑结构和存储结构之间的联系。


逻辑结构和存储结构之间的联系

数据结构的操作,主要包括查找、插入、删除、遍历和排序等。

数据结构知识网络
© 著作权归作者所有,转载或内容合作请联系作者

喜欢的朋友记得点赞、收藏、关注哦!!!

相关推荐
小德车机导航1 天前
839个青龙签到脚本免费下载|自动签到脚本合集,持续更新中
教程·技术
AAA_Ethan3 天前
2026餐饮供应链测评:中高端餐厅如何筛选高品质竹笋供应商?
技术·餐饮
小德车机导航4 天前
关于高德地图 V16.18.0.1141 手机版 修改思路说明
教程·技术
Fang_YuanAI15 天前
华为韬定律:是故事,还是事故?
数据库·科技·华为·aigc·芯片·技术
code_li18 天前
雷池WAF:轻松拦截网络攻击
安全·攻击·攻防·技术·防护
小德车机导航18 天前
再添新功能。
教程·技术
marsh020625 天前
47 openclaw监控指标设计:关键性能指标(KPI)选择与实现
网络·ai·编程·技术
marsh02061 个月前
45 openclaw集群部署与扩展:应对流量峰值的高可用方案
ai·编程·技术
marsh02061 个月前
44 openclaw分布式事务:跨服务数据一致性解决方案
分布式·ai·编程·技术