既然要学习《数据结构》,那必然要先了解数据结构是什么。
本章主要介绍的是数据结构的基本概念和关于数据结构的术语。
一、数据结构
1、数据(Data):是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。
或:是描述客观事物的符号,是计算机中可操作的对象,是能被计算机识别并输入给计算机处理的符号集合。
2、数据元素(Data Element):是数据的基本单位,在计算机程序中通常作为一个整体进行
考虑和处理。
或:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。
3、数据项(Data Item):数据项是数据的不可分割的最小单位,通常一个数据元素由若干个数据项组成。
4、数据对象(Data Object):是性质相同的数据元素的集合,是数据的一个子集。
5、数据结构(Data Structure):是相互之间存在一种或多种特定关系的数据元素的集合。
二、逻辑结构
若在修读《数据结构》前已经学习过《离散数学》,那接下来出现的几个结构大家必然是已经了解过了,没有学过《离散数学》也没有大的问题,这并不影响你接下来的学习。
逻辑结构(Logical Structure):指数据对象中数据元素间的关系。
1、集合(Set):集合结构是一种松散的逻辑结构,它包含的元素可以是各种类型。在集合结构中,元素之间除同属该集合这一联系外没有其他的关系。下面是一张类似Venn(文氏)图的集合表示。
2、线性结构(Linear Structure):线性结构是一个有序数据元素的集合,数据元素之间是一对一的关系。
3、树形结构(Tree Structure):树形结构是一种非线性的、一对多的层次关系。
4、图形结构(Graphical Structure):图形结构是一种比树形结构更复杂的非线性的、多对多的关系。
从这几个例子中可以看出,逻辑结构通常是用来解决实际问题的,根据实际问题选择合适的逻辑结构表示出各数据元素之间的关系,从而快速找到解决问题的方案。
三、物理结构/存储结构
了解完了逻辑结构,接下来的问题是如何让计算机储存给出的数据元素呢,这就不得不提到物理结构(也叫存储结构)了。
物理结构(Physical Structure):物理结构是指数据的逻辑结构在计算机中的存储形式。
1、顺序存储结构:将数据元素存放在地址连续的存储单元里,数据间的逻辑关系和物理关系一致。
顺序存储结构就是你有多少个元素要存,计算机就在内存中找到足够存储你这些元素的一片连续空间,依次将它们存入。
2、链式存储结构:将数据元素存放在任意存储单元里,它们的地址可连续可不连续,但需要建立起一对一的数据关系。
从定义中可以看出,链式存储更加灵活,数据存在哪里不重要,只要有能找到它的指针就够了。
四、抽象数据类型
1、数据类型:指一组性质相同的值的集合及定义在此集合上的一些操作的总称。
2、原子类型:不可再分解的基本类型,包括整型、实型、字符型等。
3、结构类型:由若干个类型组合而成,是可再分解的。
4、抽象:抽出事物具有的普遍性的本质。
5、抽象数据类型(Abstract Data Type):指一个数学模型及定义在该模型上的操作。
想必一部分同学被书上的ADT(类似下面代码框中的内容)折磨的体无完肤,不同于编程语言的学习,《算法》中很难找到完整的程序,取而代之的是一段又一段的函数或伪代码,这让编程学的本就不好的同学更是雪上加霜。
ADT (Structure Type) //抽象数据类型名
Data
(Introduction) //数据元素之间逻辑关系的定义
Operation //对该抽象数据类型的操作
Operation 1:...
Operation 2:...
EndADT
为避免思路能看懂,伪代码看不懂的情况产生,我会在每章/节后附带一个完整的实现过程,帮助大家在算法编写方面的学习。