第一章:初识数据结构
一(1)数据结构理解
结构,比如分子结构表达的是组成分子的原子之间的排列方式。可以得出结构的理解:不同数据元素之间不是独立的,而是存在特定的关系叫做结构。
一(2)数据结构定义
(1)集合观:是相互之间存在一种或多种特定关系的数据元素的集合。
(2)学科观:是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。
一(3)数据的基本概念和术语
1.数据
定义:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。
举例:实型、整型等数值类型,字符以及图像,声音等非数值类型。
2.数据元素
定义:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录。
举例:在人类集体中,其中一个人就是数据元素;在植物集体中,一颗植物就是数据元素。
3.数据项
定义:一个数据元素可以由若干个数据项组成。
举例:在人类集合中,一个人是数据元素,而人内含有很多器官等,可以被当作数据项;而人也有年龄,性别等数据项。
Tips:数据项是数据不可分割的最小单位。但在研究具体问题时:通常将数据元素作为研究问题的出发点。(个人理解:数据项太“小”,大多数情况下缺乏综合性和整体性)
4.数据对象
定义:性质相同的数据元素的集合,是数据的子集。
举例:人类集合中,往往一些人具有共性,比如有相同的生日、性别等,这些具有相同性质的人就可以被当作数据对象。
数据、数据元素、数据对象和数据项的关系如下图
(为了便于理解,用红色笔添加了一些名词)
一(4)逻辑结构与物理结构
【1】逻辑结构
定义:数据对象中数据元素之间的相互关系。
分类:
1.集合结构
特性:集合结构中的数据元素除了同属于一个集合外,他们之间没有其他关系。
2.线性结构
特性:线性结构中的数据元素之间是一对一的关系。
3.树形结构
特性:树形结构中的数据元素之间存在一种一对多的层次关系。
4.图形结构
特性:图形结构的数据元素是多对多的关系。
Tips:
- 每一个数据元素看作一个节点,用圆圈表示。
- 元素之间关系用箭头表示,如果关系有方向,记得标箭头。
【2】物理结构(又称作存储结构)
定义:数据的逻辑结构在计算机中的存储形式。
举例:把数据元素存储到计算机的存储器。
分类:
1.顺序存储结构
定义:把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。
举例:
(1)按顺序排队,谁也不插位;
(2)C语言中数组的存储也是顺序存储。
2.链式存储结构
定义:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。
Tips:链式存储结构的存储方式不能反映其逻辑关系。(个人理解:因为是链式存储存放是任意的、灵活的,逻辑关系讲究条理性)
【3】逻辑结构和物理结构的联系和区别
联系:
(1)数据的物理结构需要正确反映数据元素的逻辑关系。
(2)存储数据元素之间的逻辑关系是实现物理结构的重难点。
区别:
(1)逻辑结构面向问题,物理结构面向计算机。我们的基本目标就是将数据及其逻辑关系存储到计算机的内存中。
一(5)数据类型
定义:是指一组性质相同的值的集合及其定义在此集合上的一些操作的总称。
理解:从定义不难看出,性质不同,标准不同,所确立的数据类型也就有所区别,比如在性别的性质下,人一般可以分为男性和女性;而在年龄下分,又可以分为老人,幼童等。
分类:(按照C语言中取值的不同)
- 原子类型:不可以再分解的基本类型。(例如整型、实型、字符型)
- 结构类型:由若干个类型组合而成,是可以再分解的。(例如数组中和数组每个数据的关系)
一(6)抽象数据类型(Abstract Data Type,ADT)
(浅谈,后期单独做一章节)
抽象的定义:抽取的事物具有的普遍性的本质。
抽象数据类型的定义:一个数学模型及其定义在该模型上的一组操作。
特性:ADT体现了程序设计中问题分解,抽象和信息隐藏的特性。
抽象数据类型的标准格式:
ADT 抽象数据类型名
DATA
数据元素之间的逻辑关系的定义
Operation
操作1
初始条件
操作结果描述
操作2
……
操作n
……
endADT