如何理解数据结构?

1,547 阅读4分钟

我的理解 看了很多关于数据结构的解释,依然云里雾里;学习一段时间后,大概有了一些自己的理解

每种计算机语言中都有一些基本数据类型,例如前端:string,number,boolen..., 而数据结构包含数组,栈,链表,散列表,树,图等;

我们可以发现这些数据结构的组成元素,其实都是基本数据类型;所以,可以理解为:数据结构就是基本数据类型的组合结构,数据结构的目的就是将现实世界的信息抽象,根据其特点建立合适的结构,方便计算机对其进行处理和计算。

例如:对于一对一关系,我们采取线性模型,一堆多,多对多关系分别采取树,图模型。然后再根据信息具体特点进一步划分。

数据结构-逻辑结构,存储结构

逻辑结构

逻辑结构分为四种类型:集合结构,线性结构,树形结构,图形结构

  1. 集合结构:就是数据元素同属一个集合,单个数据元素之间没有任何关系。

collection.png

  1. 线性结构:线性结构中的数据元素之间是一对一的关系。

line.png

  1. 树形结构:树形结构中的元素存在一对多的关系。

tree.png

  1. 图形结构:图形结构中的元素是多对多的关系。

graph.png

存储结构(物理结构)

常见的存储结构分为:顺序存储结构,链式存储结构,散列存储结构,索引存储结构

  • 顺序结构和链接结构适用在内存结构中。
  • 索引结构和散列结构适用在外存与内存交互结构。
  1. 顺序存储结构:在计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素,称作线性表的顺序存储结构。

    • 一段连续的内存空间。
    • 优点:随机存取表中元素
    • 缺点:插入和删除操作需要移动元素,插入删除效率低,大小固定
  2. 链式存储结构:在计算机中用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。它不要求逻辑上相邻的元素在物理位置上也相邻。因此它没有顺序存储结构所具有的弱点,但也同时失去了顺序表可随机存取的优点

    • 比顺序存储结构的存储密度小 (每个节点都由数据域和指针域组成,所以相同空间内假设全存满的话顺序比链式存储更多)。
    • 逻辑上相邻的节点物理上不必相邻。
    • 插入、删除灵活 (不必移动节点,只要改变节点中的指针),插入删除效率高。
    • 查找结点时链式存储要比顺序存储慢。
    • 每个结点是由数据域和指针域组成。
  3. 散列存储结构:将数据的存储位置与关键码建立映射关系,从而提高数据的查找速度。

    • 选取某个函数,数据元素根据函数计算存储位置可能存在多个数据元素存储在同一位置,引起地址冲突
    • 优点:查找基于数据本身即可找到,查找效率高,存取效率高。
    • 缺点:存取随机,不便于顺序查找。
  4. 索引存储结构:除建立存储结点信息外,还建立附加的索引表来标识结点的地址。索引表由若干索引项组成。

    • 索引存储结构是用结点的索引号来确定结点存储地址,其优点是检索速度快,缺点是增加了附加的索引表,会占用较多的存储空间。
    • 为了方便查找,整体无序,但索引块之间有序,需要额外空间,存储索引表。
    • 优点:对顺序查找的一种改进,查找效率高
    • 缺点:需额外空间存储索引

存储结构参考:www.cnblogs.com/fengty90/p/…