数据结构(一知半解)

数据结构内容框架

数据结构(一知半解)
图:数据结构内容框架(来自:moodle)

数据模型

利用计算机解决问题(步骤):

  • 首先从具体问题中抽象出一个适当的数据模型
  • 设计出解该数据模型的算法
  • 编写程序,得到软件

关键点:数据结构的是刻画现实世界的数据模型。
数据模型在计算机中很多地方有体现.比如数据库中的表,各种编程语言中的树,图等。
数据模型也有多种表达的方式,可以通过画草图的方式刻画,可以通过数学的方式来刻画,可以通过文字描述的方式来刻画等等。

数据结构基本概念

什么叫做数据结构?

数据结构是数据的组织方式。那么什么叫做数据呢?

数据:描述客观事物的符号,是计算机中可以操作的对象,能够被计算机识别,并能够被计算机处理的符号集合。

数据元素:组成数据的,有一定意义的基本单位,在计算机中一般作为整体进行处理。又称记录。(在一个班级中,小明同学就是基本元素)

数据项:一个数据元素由若干个数据项组成,不可分割。(小明有年龄,性别…这些用于描述小明的属性就是数据项)

数据结构
数据元素的集合,并且这些数据元素之间存在着某种特定的关系。

PS:
我们根据数据的内在关系去组织数据,表现为一定的结构,也就是这里所说的数据结构。比如,年龄,性别,成绩都是和学生相关的数据,那么我们就会将这些数据组织到一起构成相应的集合,然后再给这个集合(结构)取一个代号:”学生”。

数据结构的作用

数据结构是一种逻辑组织结构。其逻辑组织的方式进一步决定了程序的算法。
数据结构依赖于物理组织结构。因为数据结构最终是需要放在电脑中来进行处理的,就需要充分考虑电脑的物理特性。(据此更易进行访问速度(利用计算机机制的优势)优化)

逻辑结构 与 物理结构

前面关于数据结构的介绍,主要是从逻辑结构上来进行说明的,接下来说说数据结构的两方面的表现:逻辑结构 与物理结构
其中,逻辑结构 是从概念层面来说明数据之间存在的(逻辑)关系的,并未涉及到计算机底层的机制。相对而言,物理结构 则是将逻辑层面的关系与计算机的底层实现进行了具体的结合(考虑内存的特点,比如地址分配,寻址)。

逻辑结构

逻辑结构反映的是数据之间的相互关系,反映的是现实层面的关系。(比如,小明有15岁。那么,我很自然的认为”小明”,“15岁”在刻画同一个实体。那么则认为这两个属性在逻辑上应该是存在某种关系的)

接下来,介绍各种计算机中常见的逻辑结构。需要说明的是,在下面的所有的逻辑结构中,每个数据元素只能了解有限的其他的数据元素。这与我们现实的认知是一致的,一个人不可能学习世界上所有的知识,认识世界上所有的人。

集合结构

数据元素处于同一集合,但是彼此之间无关系。

举个例子,你和某个陌生人在同一个学校,但是你们彼此不认识。那么我和陌生人基本上可以看做不会相互影响的(忽略细微关联)。

线性结构

数据元素之间为一对一的关系。

在集合中,一个元素规定只与前后各一个元素相关联。相对于集合结构而言,此处加入了数据元素之间的关联关系,但这种关联关系是比较简单的。但是,这种简单的关系是较为基本的,正如数学中线性函数的重要地位一样。

树结构

数据元素存在一对多的层次结构。

大自然中,层次结构是一种普遍存在的现象。
划分层次,也是人类一种行为方式,比如说,划分阶级,上层建筑与物质基础等等。为刻画这种模型,就选取了树这种模型

数据集合中,数据元素存在多对多的关系。

这种结构用于刻画事物之间的复杂关系。随着科学的发展,过去的模型简化已经不能适应建模的准确性了,所以此时就需要考虑越来越多的复杂关系,而图这种模型能够很好的刻画这种关系。

物理结构

物理结构指,逻辑结构在计算机中的存储形式。包括顺序存储,链式存储两种方式。

待续…

参考:
《大话数据结构》
算法与数据结构关系
数据结构全攻略–学好数据结构的必经之路