代码改变世界

数据结构绪论

2019-03-19 14:50  般若Android  阅读(188)  评论(0编辑  收藏  举报

  数据结构:主要用于计算机实现数据组织数据处理的方法

  什么是数据结构及相关定义

  数据是描述客观事物的的数和字符的集合。例如,日常生活中使用的各种文字、数字和特定的符号都是数据

  人们通常以数据元素作为数据的基本单位,有些情况下,数据元素也称为元素、节点、顶点、记录等

  数据元素由若干个数据项组成,数据项是具有独立含义的最小数据单位,也称为字段域或域

  数据结构是指所有数据元素以及数据元素之间的关系,可以看作是相互之间存在着某种特定关系的数据元素的集合

  数据结构包括以下几个方面:

  1.数据元素之间的逻辑关系,及数据的逻辑结构,它是数据结构在用户面前呈现的形式

  2.数据元素及其关系在计算机存储器中测存储方式,及数据的存储结构,也称为数据的物理结构

  3施加在数据上的操作,即数据的运算(算法)

  数据的逻辑结构是从逻辑关系(主要是指数据元素的相邻关系)上描述数据的,它与数据的存储无关,是独立于计算机的。因此数据的逻辑结构可以看作是从具体问题抽象出来的数学模型

  数据的存储结构是逻辑结构用计算机语言的实现或在计算机中的表示(亦称为映像),也就是逻辑结构在计算机中的存储方式,它就是依赖计算机语言的,一般只在高级语言上讨论存储结构。

  数据的运算是定义在数据的逻辑结构之上的,每种逻辑结构都有一组相对应的运算,例如,最常用的运算有检索插入删除更新排序等数据的运算最终需要在对应的存储结构上用算法实现。

  因此,数据结构是一门讨论“描述现实世界实体的数学模型(通常为非数值计算)及其之上的运算在计算机中如何表示和实现”的学科

  

  在不会产生混淆的前提下,常常将数据的逻辑结构简称为数据结构,数据的逻辑结构主要有一下几类

  1.集合

  集合是指数据元素之间除了“同属于一个集合”的关系外,别无其他关系。

  2.线性结构

  线性结构是指该结构中的节点之间存在一对一的关系。其特点是开始节点和终端节点都是唯一的,除了开始节点和终端节点,其余节点有且只有一个前驱,有且只有一个后驱。线性表就是一种典型的线性结构

  3.树形结构

  树形结构是指该结构中的节点之间存在一对多的关系。其特点是每个节点最多只有一个前驱,但可以有多个后继,且终端点可以有多个,二叉树就是一种典型的树形结构。

  4.图形结构

  图形结构是指该结构中的节点之间存在多对多的关系,其特点是每个节点的前驱和后继的个数都可以是任意的。因此,图形结构可能没有开始节点和终端节点,也可能有多个开始节点、终端节点。

  树形结构和图形结构统称为非线性结构,该结构中的节点之间存在一对多或多对多的关系,由图形结构、树形结构和线性结构的定义可知,线性结构是树形结构的特殊情况,而树形结构又是线性结构的特殊情况。

  数据结构的存储结构类型

    1.顺序存储结构

  该结构是把逻辑上相邻的节点存储在物理位置上相邻的存储单元里,节点之间的逻辑关系由存储单元的相邻关系来体现。通常顺序存储结构是借助于计算机设计语言的数组来描述的

  顺序存储的主要优点是节省存储空间,因为分配给数据的存储单元全用于存放节点的数据,节点之间的逻辑关系没有占用额外的存储空间,

  可实现对节点的随机存取,即每个节点对应一个序号,由该节点可直接计算出节点的存储地址

  缺点是不便于修改,对节点的插入、删除预算时可能要移动一系列的节点

   2.链式存储结构

  该结构不要求逻辑上相邻的节点在物理位置上也相邻,节点之间的逻辑关系是由附加的指针字段表示的。通常链式存储结构要借助于计算机程序设计语言的指针类型来描述

  链式存储方法的主要优点是便于修改,在插入、删除运算时,仅需要修改相应节点的指针域,不必要移动节点,

  主要缺点是存储空间的利用率较低,因为分配给数据的存储单元有一部分被用来存储节点之间的逻辑关系了,另外,由于逻辑上相邻的节点在存储空间中不一定相邻,所以不能对节点进行随机存取

  3.索引存储结构

  该结构通常是在存储节点信息的同时,还建立附加的索引表,索引表中的每一项称为索引项,索引项的一般形式是:(关键字,地址),其中关键字唯一标识一个节点,地址是指向节点的指针,这种带有索引的表的存储结构可以大大提高数据查找的速度

  线性结构采用索引存储方法后,可以对节点进行随机访问,在进入插入、删除运算时,只需移动索引表中对应节点的存储地址,而不必移动节点中的数据,所以仍保持较高的数据修改运算效率

  索引存储方法的的缺点是增加了索引表,因而降低了存储空间的利用率

  4.散列(或哈希)存储结构

  该结构的基本思想是根据节点的关键字通过哈希(或散列)函数直接计算出一个值,并将这个值作为该节点的存储地址。

  哈希存储方法的优点是查找速度快,只要给出待查节点的关键字,就可以计算出该节点的存储地址。但与前三种存储方法不同的是,哈希存储方法只有存储节点的数据,不存储节点之间的逻辑关系,一般只适合要求对数据尽心==进行快速查找和插入的场合

 

  上述4中基本的存储方法既可以单独使用,也可以组合起来对数据结构进行存储映像。同一种逻辑结构采用不同的存储方法,可以得到不同的存储结构,选择何种存储结构来表示相应的逻辑结构,应视具体要求而定,主要考虑的是运算是否方便及算法的时空要求。