学习数据结构(零)——初识数据结构

博主非科班出身,而且没有离散数学的基础,我是在C++的基础上学习数据结构的,可能大多数演示源码都是由C++写的。可能有的东西确实不如科班大佬们清楚。

目录

0.数据结构是干嘛的?

1.数据结构的内容

2.存储结构

3.数据类型


0.数据结构是干嘛的?

数据结构主要是研究数值计算的程序设计问题中计算机操作对象、对象之间的关系和操作。其在程序中的关系如下表所示:

  数据表示 数据处理
抽象 逻辑数据结构 基本操作
实现 存储结构 算法

即数据结构的三要素:数据的逻辑结构、数据的存储结构以及数据的操作。通过抽象层,舍弃数据元素中的具体内容,得到逻辑结构的表示;通过分解和抽象将处理要求划分成各种功能,舍弃实现细节,得到操作的定义;将问题转化为数据结构的过程,然后通过对细节实现的考虑得到存储结构和具体操作。

解决问题的关键是设计合适的数据结构来表示问题,然后才能写出有效的算法。

1.数据结构的内容

其内容包括:数据、数据元素、数据对象、数据结构。数据是信息的载体;数据元素是数据的基本单位,也称结点或记录,元素是具有独立含义的最小标识单位;数据对象是具有相同性质的数据元素集合;数据结构是相互存在的一种或多种关系的集合,用来反映数据的内部构成。

一般常见的数据结构包括:线性结构(一一映射)、树形结构(类似于基类和派生类,从根生出子)、集合结构(彼此不相关关系)、图形结构(存在复杂相互关系)。

学习数据结构(零)——初识数据结构_第1张图片

2.存储结构

存储结构是指数据在计算机中的存放方式,是数据逻辑结构的物理存放方式。

学习数据结构(零)——初识数据结构_第2张图片

(1)顺序结构:把逻辑上相邻的元素存放在物理单位上相邻的存储单元中,数据元素之间逻辑关系由存储单元的邻接位置关系来表示。其中常见的是顺序表、循环队列。

(2)链式结构:逻辑上相邻的数据元素在物理位置上不一定相邻,通过附加指针将物理位置上不相邻的元素链接表示逻辑上相邻的关系。其中常见的是链表、二叉链表。

(3)索引存储:是顺序存储的一种推广,用于大小不等的数据节点。通过一个整数域到数据元素的映射函数,形成一个存储一串索引项(整数域和存储地址的指针)的索引表。

(4)散列存储:是索引存储的扩展延伸,将数据元素的关键码(不一定是整数值)按照指定的散列函数映射成具体的存储地址。其中常见的散列表。

PS:线性结构最大特点是中间元素前后元素只有唯一一个与之对应!

3.数据类型

(1)原子类型:其值不可在分解,通常是编程语言提供的数据类型。

(2)结构类型:通常是用户借助语言自行定义的。包括:<1>固定聚合类型:由确定数目的成分按某种类型构成。<2>可变聚合类型:值的成分不确定。

抽象数据类型是指一个数学模型和定义在此数学模型上的一组操作。其特征是将使用与实现分离,从而实现封装和隐藏信息。

 

你可能感兴趣的:(数据结构,算法原理,机器学习,数据库)