从数据结构说起(一)

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)用于实现的算法策略。数据结构可由一个四元组组成:

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

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

逻辑结构分类示意图

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


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

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

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

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

相关推荐
marsh02068 小时前
17 openclaw数据库连接池配置:避免性能瓶颈的关键
数据库·ai·oracle·编程·技术
marsh02069 小时前
16 openclaw与数据库集成:ORM使用与性能优化
数据库·spring·ai·性能优化·编程·技术
marsh02061 天前
14 openclaw模板引擎使用:高效渲染动态内容
java·前端·spring·ai·编程·技术
marsh02064 天前
13 openclaw数据验证与过滤:确保应用安全性的第一道防线
网络·数据库·ai·编程·技术
marsh02064 天前
12 openclaw中间件开发:打造可复用的业务逻辑组件
ai·中间件·编程·技术
marsh02065 天前
11 openclaw路由系统实战:构建灵活高效的请求分发机制
ai·编程·技术
marsh02067 天前
7 OpenClaw工作流程详解:从请求到响应的完整生命周期
网络·ai·编程·技术
marsh02068 天前
6 OpenClaw架构深度剖析:理解其设计哲学与核心组件
ai·架构·编程·技术
ffreask11 天前
2 硬件选型指南:如何为openclaw选择最佳小龙虾处理设备
数码相机·ai·编程·技术
marsh020611 天前
2 为什么选择OpenClaw?深入分析其技术优势与商业价值
人工智能·ai·数据挖掘·编程·技术