数据结构第一章
数据结构: 是相互之间存在一种或多种特定关系的数据元素的集合。
If you give someone a program, you will frustrate them for a day; if you teach them how to program, youwill ftustrate them a lifetime. ---《大话数据结构》
如果你交给某人一个程序,你将折磨他一整天。如果你教会他们编程,你将折磨他们一生。
1.1 为什么要学习数据结构?
1. 数据结构是计算机学科的基础课程,但其有一定的难度。
2. 找工作,很多互联网公司招聘时,都会对数据结构进行考察。
3. 计算机 和 软件方面的研究生 考研的必备课程。
1.2 数据结构怎么学?
坚持上我的课,多练习,多思考。
1.3 什么时数据结构?
数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。
1968年,美国的高德纳教授在其所写的《计算机程序设计艺术》中,较系统的阐述了数据的逻辑结构和物理结构及其操作,开创了数据结构的课程体系。至此,世人开始了被数据结构折磨的岁月。
数据结构是计算机存储、组织数据的方式,是相互之间存在一种或多种特定关系的数据元素的集合。
数据结构具体指同一类数据元素中各元素之间的相互关系,包括数据结构的逻辑结构、数据的存储结构和数据的运算结构。
在计算机科学中,数据结构不仅是一般非数值计算程序设计的基础,而且是设计和实现汇编语言、编译语言、操作系统、数据库系统,以及其他系统程序和大型应用程序的重要基础。
随着互联网的发展,结构程序设计成为程序设计方法学的主要内容,人们越来越重视数据结构,认为程序设计的实质是对确定的问题选择一种好的结构,加上设计一种好的算法。可见,数据结构在程序设计中的重要地位。
程序设计 = 数据结构 + 算法
1.4 基本概念
1.4.1 数据
是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据不仅仅包括整型、实型数据等数值类型,还包括字符及声音、视频等非数值类型。
1.4.2 数据元素
是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。也被称作记录。
数据元素不能单独说,既然是元素,那么就有构成的整体,是谁的元素。元素是一个相对的概念。
比如说,在人类中,谁是元素,当然是人。
再比如,在我们班级中,谁是元素,就是在座的你我他。
再比如,在我们这个地球的社会上,国家可以看做是地球的社会的元素,各个国家又被省份划分,各个省又被城市划分,接着还有区,县,镇,村。
......
1.4.3 数据项
一个数据元素可以由若干个数据项组成。数据项是数据不可再分的最小单位。
比如:还是上面的那一篇文章叫做数据元素的话,点击进去之后,我们可以看到他的标题,作者,内容以及评论。而这些就是这条数据元素(记录)的数据项。把这四部分拆开来看,没有任何意义,组合在一起,你才能知道这条记录,想要想你传输的内容是什么。
1.4.4 数据对象
是性质相同的数据元素的集合,是数据的子集。
1.4.5 数据结构
上面解释了什么是数据,了解了数据的定义,那么下面,我们了解一个数据的结构!
什么是结构?
比如分子结构,就是说组成分子的院子之间的排列方式。严格的说,结构是各个组成部分相互搭配和排列的方式。在现实世界中,不同数据元素之间不是独立的,而是存在特定的关系,我们将这些关系称之为结构。
数据结构: 是相互之间存在一种或者多种特定关系的数据元素的集合。
比如这些桥,桥就是数据对象,每一个桥就是数据元素,每一个桥又形状,用料等不同。
当然,还要说这些桥的结构。每一块石头,每一根木头不是说随随便便就放在那里就能构成一座桥,他们不是孤立的,杂乱无序的,而是具有内在联系的。
同理,在计算机中,数据元素也并不是孤立的、杂乱无序的,而是具有内在联系的数据集合。数据元素之前存在一种或者多种特定的关系,也就是数据的组织形式。
分析待处理对象的特征及各个处理对象之间存在的关系,就是研究数据结构的意义所在。
1.5 逻辑结构和物理结构
1.5.1 逻辑结构
逻辑结构: 是指数据对象中数据元素之间的相互关系。
逻辑结构分为四种:
1. 集合结构: 集合结构中的数据元素除了同属于一个集合外,他们之间没有其他的关系。各个数据之间的地位是平等的,他们的共同属性是同属于一个集合。数据结构中的集合类似于数学中的集合。
2. 线性结构: 线性结构中的元素之间是一一对应的关系。
3. 树形结构: 树形结构中的数据元素之间存在一种多对多的层次关系。
4. 图形结构: 图形结构的数据元素是多对多的关系。
逻辑结构是针对具体的问题的,是为了解决某个问题,在对问题的理解上,选择一个合适的数据结构表示元素间的逻辑关系。
集合
线性结构
树形结构
图形结构
1.5.2 物理结构
物理结构: 是指数据的逻辑结构在计算机中的存储形式。 数据的存储结构应正确的反应数据元素之间的逻辑关系,如何存储数据元素之间的逻辑关系,是实现物理结构的重点和难点。
数据结构的两种存储结构:
1.顺序存储结构: 是把数据元素存放在地址连续的存储单元中,其数据间的逻辑关系和物理关系是一致的。比如:排队,数组。
2.链式存储结构: 是把数据元素存放在任意的存储单元中,这组存储单元可以是连续的,也可以是不连续的。比如:银行或者医院,你去了之后,先去另一个号码,然后随意坐在等候区,等到叫到你的号码之后,你再上前办理业务或者看病。
注意:还有索引存储结构和散列存储结构。(自行了解)
1.6 抽象数据类型
数据类型: 是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。
数据类型是按照值得不同进行划分的。在高级语言中,每个变量,常量和表达式都有各自的取值范围。类型就是用来说明变量或者表达式的取值范围和所能进行的操作的。
问:为什么当年设计计算机的大佬们要设计数据类型?
抽象:是指取出事物具有的普遍性的本质。它是抽出问题的特征而忽略非本质的细节,是对具体事物的一个概括。抽象是一种思考问题的方式,它隐藏了繁杂的细节,只保留了实现目标所必须的细节。
抽象数据类型:Abstract Data Type ,ADT,是指一个数学模型及定义在改模型上的一组操作。
ADT 抽象数据类型名
Data
数据元素之间逻辑关系的定义
Operation
操作1:
初始条件
操作结果描述
操作2:
初始条件
操作结果描述
...
endADT
1.7 小结
1.7.1 数据结构相关的概念
由这些概念,给出了数据结构的概念:数据结构之间存在一种或多种特定关系的数据元素的集合。