数据结构学习汇总

数据结构中的基本概念

  • 数据(Data):数据是信息的载体,其能够被计算机识别、存储和加工处理,是计算机程序加工的“原材料”。数据包括的类型非常广,如基本的整数、字符、字符串、实数等,此外,图像和声音等也都可以认为是一种数据。
  • 数据元素(Data Element):数据元素是数据的基本单位,也称为元素、结点、顶点、记录等。一般来说,一个数据元素可以由若干数据项组成,数据项是具有独立含义的最小标识单位。数据项也可称为字段、域、属性等。
  • 数据结构(Data Structure):数据结构指的是数据之间的相互关系,即数据的组织形式。

数据结构

数据结构包括三方面的内容,数据的逻辑结构、数据的存储结构和数据的运算。下面就将分析这三方面的内容。

  • 数据的逻辑结构(Logical Structure):即数据元素(Data Element)之间的逻辑关系。数据的逻辑结构是从逻辑关系上描述数据的,与数据在计算机中如何存储无关,也就是独立于计算机的抽象概念。从数学分析的角度来看,数据的逻辑结构可以看作从具体问题抽象出来的数学模型。
  • 数据的存储结构(Storage Structure):即数据元素(Data Element)及其逻辑关系在计算机存储器中的表示形式。数据的存储结构依赖于计算机语言,是逻辑结构用计算机语言的实现。一般来说,只有在高级语言的层次上才会讨论存储结构,在低级的机器语言中,存储结构是具体的。
  • 数据的运算:即能够对数据施加的操作。数据的运算的基础为数据的逻辑结构,每种逻辑结构都可以归纳为一个运算的集合。在数据结构范畴内,最常用的运算包括检索、插入、删除、更新、排序等。

数据的存储结构

数据的存储结构是数据结构的一个重要内容。在计算机中,数据的存储结构可以采用如下4种方法来实现。
< 1 > 顺序存储方式简单地说,顺序存储方式就是在一块连续的存储区域一个接着一个地存放数据。顺序存储方式把逻辑上相邻的结点存储在物理位置上相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。顺序存储方式也称为顺序存储结构(Sequential Storage Structure),一般采用数组或者结构数组来描述。
线性存储方式主要用于线性逻辑结构的数据存放,而对于图和树等非线性逻辑结构则不适用。

< 2 > 链接存储方式链接存储方式比较灵活,其不要求逻辑上相邻的结点在物理位置上相邻,结点间的逻辑关系由附加的引用字段表示。一个结点的引用字段往往指向下一个结点的存放位置。
链接存储方式也称为链式存储结构(Linked Storage Structure),一般在原数据项中增加引用类型来表示结点之间的位置关系。

< 3 > 索引存储方式索引存储方式是采用附加的索引表的方式来存储结点信息的一种存储方式。索引表由若干索引项组成。索引存储方式中索引项的一般形式为:(关键字、地址)。其中,关键字是能够唯一标识一个结点的数据项。索引存储方式还可以细分为如下两类。

  • 稠密索引(Dense Index):这种方式中每个结点在索引表中都有一个索引项,其中,索引项的地址指示结点所在的存储位置;
  • 稀疏索引(Spare Index):这种方式中一组结点在索引表中只对应一个索引项。其中,索引项的地址指示一组结点的起始存储位置。

< 4 > 散列存储方式散列存储方式是根据结点的关键字直接计算出该结点的存储地址的一种存储方式。在实际应用中,往往需要根据具体的数据结构来决定采用哪种存储方式。同一逻辑结构采用不同的存储方法,可以得到不同的存储结构。而且这4种基本存储方法,既可单独使用,也可组合起来对数据结构进行存储描述。

常用数据结构

在计算机科学的发展过程中,数据结构也在随着发展。目前,程序设计中常用的数据结构包括如下内容。

1)数组和字符串

数组(Array)数组是一种聚合数据类型,是将具有相同类型的若干变量有序地组织在一起的集合。数组可以说是最基本的数据结构,在各种编程语言中都有对应。一个数组可以分解为多个数组元素,按照数据元素的类型,数组可以分为整型数组、字符型数组、浮点型数组、对象数组等。数组还可以有一维、二维及多维等表现形式。

数据结构之数组、字符串

2)栈(Stack)栈是一种特殊的线性表,其只能在一个表的一个固定端进行数据结点的插入和删除操作。栈按照后进先出的原则来存储数据,也就是说,先插入的数据将被压入栈低,最后插入的数据在栈顶,读出数据时,从栈顶开式逐个读出。栈在汇编语言程序中经常用于重要数据的现场保护。栈中没有数据时,称为空栈。

3)队列(Queue)队列和栈类似,也是一种特殊的线性表。和栈不同的是,队列只允许在表的一端进行插入操作,而在另一端进行删除操作。一般来说,进行插入操作的一端称为队尾,进行删除操作的一端称为队头。队列中没有元素时,称为空队列。

4)链表(Linked List)

链表是一种数据元素按照链式存储结构进行存储的数据结构,这种存储结构在物理上具有非连续的特点。链表由一系列数据结点构成,每个数据节点包括数据域和引用域两部分。其中,引用域保存了数据结构中下一个元素存放的地址。链表结构中数据元素的逻辑顺序是通过链表中的引用链接次序来实现的。

数据结构之链表

5)树(Tree)树是典型的非线性结构,其是包括n个结点的有穷集合K。在树结构中,有且仅有一个根结点,该结点没有前驱结点。在树结构中的其他结点都有且仅有一个前驱结点,而且可以有m个后继结点,m≥0。

6)图(Graph)图是另外一种非线性数据结构。在图结构中,数据结点一般称为顶点,而边是顶点的有序偶对。如果两个顶点之间存在一条边,那么就表示这两个顶点具有相邻关系。

7)堆(Heap)堆是一种特殊的树型数据结构,一般讨论的堆都是二叉堆。堆的特点是其根结点的值是所有结点中最小的或者最大的,并且根结点的两个子树也是一个堆结构。

8)散列表(Hash)散列表源自于散列函数(Hash function),其思想是如果在结构中存在关键字和T相等的记录,那么必定在F(T)的存储位置可以找到该记录,这样就可以不用进行比较而直接取得所查记录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

优雅的心情

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值