Data Structure

---

数据结构在学什么?

image-20210327231925876

408专业课之间的关系

image-20210327232253416

image-20210327232543170

数据,数据元素,数据项

image-20210328104543950

image-20210328104306495

image-20210328105013932

数据结构,数据对象

image-20210328105548122

数据结构注重数据元素间的关系,数据对象要求其中的数据元素具有相同性质

数据结构的三要素

数据的逻辑结构

可分为:

  • 集合:类似数学上的集合,数据元素之间并无额外联系
  • 线性结构:元素之间为一对一关系,除了头节点,所有元素都有唯一前驱,除了尾节点,所有元素都有唯一后继
  • 树形结构:数据元素之间为一对多关系
  • 图(网)状结构:数据元素之间为多对多关系

image-20210328222702835

数据的物理结构(存储结构)

  • 顺序存储:逻辑上相邻的元素在物理位置上也相邻(Array数组)
  • 链式存储:逻辑上相邻的元素在物理上可以不相邻,通过指示地址的指针链接(Linkedlist链表)
  • 索引存储:额外建立索引表保存键值对信息(关键字-地址),地址映射到内存中的对象
image-20210328223714872
  • 散列存储:存储地址直接编码在关键字中,关键字直接映射到元素对象(HashMap),又称Hash存储

后三种也统称为非顺序存储

pros and cons

image-20210329173207970

数据的运算

image-20210329174114416

注意:运算的定义针对逻辑结构,而运算的实现针对存储结构

例如Array和LinkedList在逻辑上均为线性结构,均具有对头出队,新元素入队等操作,但操作的具体实现上会根据存储结构不同而有所区别

数据类型、抽象数据类型

image-20210329175103243

image-20210329175318652 image-20210329175422099

知识回顾

image-20210329180050199

image-20210329181002564

定义一个ADT,就是定义了数据的逻辑结构运算,也就是定义了一个数据结构;对于数据结构的实现,则需要跟据具体情况确定物理结构(存储结构)

image-20210329182347290

注意定义和实现的区别

原文地址:https://www.cnblogs.com/potofsalt/p/14593736.html