数据结构学习开始

前言

数据结构是一门比较重要的学科,真好这段时间我又重新学习了一下数据结构,然后就开始写下文章来记录我学习的内容。

一、数据结构研究的内容

这里在学习数据结构的时候都会给大家介绍,学习数据结构主要是为了处理一些现实问题,跳过数据结构将这些问题抽象成计算机能够处理的方式让计算机进行操作。

比如在学校,需要通过一个系统来管理学生的信息,这个系统就需要将学生的信息存储起来,然后通过这个系统来管理学生的信息。

可以将学生的信息抽象成一个结构体,然后将这个结构体存储起来,然后通过这个系统来管理学生的信息。

这样就可以将学生的信息存储起来,然后通过这个系统来管理学生的信息。

再比如地图,我们使用导航软件,它可以找到你去那个地方的最快路径的长度,它的实现也是通过将这些地点和道路抽象成一个图,然后通过图的算法来找到最短路径的长度。

说了这么多大家应该了解到数据结构主要研究的内容了吧,其实研究的是将这些现实问题抽象为一些数据结构,然后通过这些数据结构来解决这些问题。

二、基本的概念和术语

这里需要了解几个概念和术语,等后面都会进行使用的:

1.数据

数据是指所有能输入到计算机中并被计算机处理的符号的总称。

2.数据元素

数据元素是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。

3.数据对象

数据对象是性质相同的数据元素的集合,是数据的一个子集。

4.逻辑结构

逻辑结构是指数据对象中数据元素之间的相互关系。它与存储结构无关,是独立于计算机的。

5.物理结构

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

三、逻辑结构的分类

逻辑结构是表示数据之间的关系的,它主要是考察数据之间的关系的,根据这个可以分为下面这几类:

1.集合结构

集合结构中的数据元素之间除了同属于一个集合的关系外,无其他关系。

可以看到每个元素之间没有任何的联系,所以集合中所有元素没有前驱也没有后继。

2.线性结构

线性结构中的数据元素之间是一对一的关系。

线性结构中每个元素都有且只有一个前驱和一个后继,除了第一个元素没有前驱,最后一个元素没有后继。

3.树形结构

树形结构中的数据元素之间存在一种一对多的层次关系。

树形结构中每个元素都有多个前驱和多个后继,除了第一个元素没有前驱,最后一个元素没有后继。

4.图形结构

图形结构中的数据元素是多对多的关系。

图形结构中每个元素都有多个前驱和多个后继。

四、物理结构的分类

物理结构也称为存储结构,是指数据的逻辑结构在计算机中的存储形式。

相当于把前面的逻辑结构使用物理结构进行存放,这里存放的物理结构可分为线性的和非线性的。

1.顺序存储结构

顺序存储结构是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。

对于顺序结构是在逻辑上相邻的数据元素,其存储位置也是相邻的,例如下图:

2.非线性存储结构

非线性存储结构是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。

五、数据类型和抽象数据类型

1.数据类型

以借助程序设计语言的数据类型来描述数据对象的基本操作。

2.抽象数据类型

抽象就是抽出实际问题的本质,忽略其非本质的细节。

一般指由用户定义的、表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。

抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。

抽象数据类型的定义格式为:

ADT 抽象数据类型名{
    数据对象:<数据对象的定义>
    数据关系:<数据关系的定义>
    基本操作:<基本操作的定义>
}ADT 抽象数据类型名

# 总结

数据结构是一门非常重要的学科,它可以帮助我们解决一些现实问题,将这些问题抽象为一些数据结构,然后通过这些数据结构来解决这些问题。