数据结构与算法(1)认识数据结构
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术: 数据结构与算法(1)认识数据结构
作者: 梁柏源
撰写时间:2020/5/8
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这次为大家带来的是数据结构与算法。首先要了解什么是数据结构,什么是算法。接下来我们先了解下它们的基本概念。
数据结构的基本概念:
数据结构理所当然有数据,而数据也有对象,元素,甚至还有项等等:
数据:信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。例如在生活中,人们的身份信息、看到的图片、听到的音乐都可以作为数据来进行输入和处理。
数据对象:具有相同性质的数据元素的集合,是数据的一个子集。例如所有人的身份信息可以作为一个数据对象,就像数学中的集合一样,可以把它看成一个整体。
数据元素:数据的基本单位,通常作为一个整体进行考虑和处理。例如每一个人的身份信息可能就是一个数据元素,比如身份证的16位数字中的每一位数字都可以看作一个元素。
数据项:构成数据元素的不可分割的最小单位。在身份信息中,有姓名、有身份证编号,这样的信息就是数据元素中的数据项。
为了方便看,在下亲自作图(按在下理解所作):
当然数据嘛,怎么能少的了数据类型。
数据类型:是一组值的集合和定义在该集合上的操作的总和。其中有原子类型、结构类型、抽象数据类型。(在下知识存量不够只能在网上粗浅学习一下)
原子类型,原子就是不可再分割的意思,它是原子类型值的集合和定义在该集合上的操作。结构类型,它是结构的集合和定义在集合上的操作。结构就是多个原子类型值的组合,其中有 list、map、set 等。
抽象数据类型,它是数据模型以及定义在该数据模型上的操作,可以用一个三元组来表示,分别是数据对象、数据关系和相关的操作。对于抽象数据类型,只考虑它的逻辑特性,具体的内部实现是不考虑的。
结构:数据不是孤立存在的,它们存在着某种关系,这种相互的关系我们叫做结构。
这样就有了数据结构的一个概念:
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
在学习了《数据结构与算法》这门课程后,在下了解到数据结构的三要素。
数据结构的三要素:逻辑结构、物理结构、以及数据的运算。
下面我们了解一下数据结构的三要素:
(1)、逻辑结构
逻辑结构是指数据元素之间的逻辑关系,它更贴近于现实,即从逻辑关系上来描述数据。它是独立于计算机的,与计算机内部如何存储是无关的。
在逻辑结构中,具体又分为四种:线性结构、集合、树形结构、图状结构。其中,把集合、树形结构、图状结构统称为非线性结构.
线性结构
在生活中有许多线性结构的例子,比如排队买票时,排的队伍就是一个线性结构。在对成绩进行从小到大排序,它也是一个线性的结构。
集合
集合是指除了所有的元素均在一个集合之内,之外再无其他的关系。在数学中,所有整数就是一个集合,所有的小数也是一个集合。
树形结构
树形结构是指一对多的关系。比如说狗是一类的总称,狗中又有柯基、哈士奇、泰迪等具体的种类,这样一个种类的分支关系,它们就是一个树形结构。
图状结构
图状结构也叫做网状结构,它是多对多的关系。
存储结构
存储结构是指数据结构在计算机内的表示,也称为物理结构。它既包括数据元素本身的表示,也包括数据元素之间关系的表示。
存储结构也分为四种:顺序存储、链式存储、索引存储、散列存储。
顺序存储
数据在内存当中,会把它存放在一个一个的存储单元之中,而顺序存储的意思是指在逻辑上相邻的元素在物理存储上也让它相邻。
顺序存储元素之间的关系是通过物理位置相邻来体现的,其最大的好处就是可以实现随机存储,在知道第一个单元的位置时,通过简单运算,根据它相邻的特性也就知道其后所有元素的数据位置
链式存储
链式存储是指在逻辑上相邻的元素,在物理存储位置上是不相邻的。链式存储通过名字来看,它有一个链接的含义,它在具体的实现上也是利用这样一个具体操作的
在链式存储当中,每一个数据元素存放的物理单元位置是不确定的,它们的距离可能很远也可能很近,无法通过顺序存储那样的手段来找到下一个元素的位置。但是在链式存储中,是通过指针来表示相邻元素的关系的。所以在存取手段上,要通过指针来找到下一个元素的位置。所以在链式存储中只能实现顺序存储而无法实现随机存储。
索引存储
索引存储在内存中不仅仅要存放每一个数据元素,还要建立一张索引表。在索引表中有一个个索引项,每一个索引项都存放两个信息,一个是关键字,另一个是该关键字查找数据对应的地址。
但是,索引存储有一个缺点,就是既要存放数据元素,又要存放索引表,在存放索引表的时候会消耗内存资源。
散列存储
散列存储也称为哈希存储,它是通过关键字的相应函数运算直接求得对应数据元素的地址
(2)、数据的运算
数据的运算包括运算的定义和实现方式,运算的定义针对逻辑结构,运算的实现针对存储结构。
总结:
数据结构的基本概念:
(1)、基本概念和术语:数据、数据元素、数据类型等;
(2)、数据结构三要素:
- 逻辑结构:
- 线性结构:线性表、栈、队列,
- 非线性结构:树、图、集合
- 存储结构:
- 顺序存储
- 链式存储
- 索引存储
- 散列存储
- 运算