先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题
一 why
数据结构是计算机的基础学科,在我们的应用程序和驱动程序中都是非常重要的,我们知道一个基础公式:程序 = 算法+数据结构
,学好了数据结构方便我们写出更优美更高效的程序,好比我们学写字,学习数据结构相当于学习字的结构和章法。
本篇博客是数据结构的一些抽象概念和定义,暂时没有源码,所以阅读起来可能会比较生硬,但是也希望大家克服这个障碍,从本系列的下一章开始会逐渐相关示例代码。
二 what
(1)什么是数据结构
是研究组成数据的数据元素的关系的学科
怎么理解呢?我们可以以我们学习过的化学中的分子结构来类比,我们知道水分子的化学表达式为H2O,一个氧元素和两个氢元素组成,同样的数据结构也是可以理解成不同的元素组成的数据,只是这些元素可以是整形,字符型,结构体等等。
比如图书馆藏书的数据如下,它的数据元素有编号,书名,作者等等
数据结构=图书馆藏书
数据元素=一行的信息
数据项=每一行中的每个列值
(2)研究目的
通过研究元素的关系,帮助我们在开发软件的时候更好的组建数据模型,让数据在内存中的操作更加的流畅高效
数据结构可用形式化语言描述,它是一个二元组
DS = (D, R) //D为数据元素的集合 R表示D上关系的集合
(3)数据结构的关系
逻辑结构 : 数据元素之间的抽象关系
集合结构
线性结构
树形结构
图状结构
存储结构 : 在内存中的存储形式
顺序存储结构 :
特点: 在内存中的存储地址是连续的,紧密挨着的
举例: 数组,malloc分配的内存
链式存储结构
优点: 内存空间可以动态分配,增删改查很方便
缺点: 查找索引的效率比较慢,存储空间占用的比较大
索引存储结构
散列存储结构
运算结构 : 对数据进行的操作
插入
删除
查找
排序
(3.1)四种逻辑结构
(3.2)四种存储结构
顺序存储和链式存储是我们接下来要学习和掌握的重点内容,在本系列文章中主要探讨这两个方面
(3.3)运算关系–增删改查等等
(4)总结