数据结构 学习笔记

来源:互联网 发布:网络主播签约注意事项 编辑:程序博客网 时间:2024/05/24 15:38

这是我的第一篇博文。

 

近期一直在做数据结构课程的实验,从线性表 到 树结构 再到 图结构,发现指导书上的抽象的东西太多,基本全是伪代码,而且树和图中的算法很多,比如广度优先搜索要用到队列,然后就开始想想队列是怎么个写法,再然后又不由主的想起一个问题,队列在哪学的呐……再翻翻书? so一直想制作一个思维导图,but我比较懒,太麻烦不想做,可是又不想辜负自己这一番心血来潮,于是对着书的目录,凭借自己课上的记忆,查阅各章节资料之后,准备做一次笔记,记录我的学习历程。

 

到底啥是“数据结构”?个人理解,就是“孙子兵法”而已。

怎么理解这个“兵法”?简单粗暴点,也就是下面这些。


1.  抽象层-逻辑结构

表示数据元素之间的逻辑关系,可以看作是从具体问题抽象出来的数学模型,与数据的存储无关。

1)  集合结构 ( )     结构中的数据元素仅同属于一个集合,元素之间互不干扰。

2)  线性结构 ( )     结构中的数据元素具有一对一的前后关系。

3)  树型结构 ( )     结构中的数据元素具有一对多的父子关系。

4)  网状结构 ( )     结构中的数据元素具有多对多的映射关系。

 

2.  结构层-物理结构

记录数据结构在计算机中存储方法,亦称作存储结构。存储内容包括元素的表示,实现方法,及元素间关系的表示。

1)  顺序结构   结构中的数据元素存放在一段连续的地址空间中;

优点:随机访问方便

缺陷:空间利用率低,插入删除不方便

2)  链式结构   结构中的数据元素存放在彼此独立的地址空间中;

每个独立的地址空间称为节点,节点除保存数据外,还需要保存相关节点的地址。

优点:插入删除方便,空间利用率高

缺陷:随机访问不方便

3)  索引结构   用结点的索引号来确定结点存储地址;

优点:检索速度快

缺陷:增加了附加的索引表,会占用较多的存储空间

4)  散列结构   根据结点的值确定它的存储地址;

优点:检索、增加和删除结点的操作速度快

缺陷:采用不好的散列函数时可能出现结点单元的碰撞,而需要附加时间和空间开销

 

3.  实现层-运算结构

1)  创建与销毁      分配资源,建立结构,释放资源;

2)  插入与删除      增加、减少数据元素;

3)  获取与修改      遍历、迭代、随机访问;

4)  排序与查找      主要针对各种算法应用;

 

到此为止,以上基本涵盖了数据结构各个层面,仅以此作为一个思维导图理清学习脉络,数据结构这门课要深究的内容还有很多,日后进行补充。

其实一直以为博客都是些技术性的文章,然而并不都是这样,用它来记录自己的学习历程,也未尝不可,这本就是一个学习交流的过程,希望看完我第一篇博文的你们,能够有所收获。

^ ^