一。绪论
1. 理解数据元素、数据结构、数据的逻辑结构与物理结构、逻辑结构与物理结构间的关系。
基本概念:
数据结构:指相互之间存在一种或多种特定关系的数据元素的集合。(数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系)
数据:是指用户输入到计算机被计算机程序处理的一些符号的总称。
数据对象:性质相同的数据元素的集合,是数据的一个子集。(某种数据类型元素的集合)
例如:
整数的数据对象是{...,-1,0,1,...}
英文字符类型的数据对象是{A,B,C,......}
数据对象可以是有限的,也可以是无限的。
数据结构不同于数据类型,也不同于数据对象,它不仅要描述数据类型的数据对象,而且要描述数据对象各元素之间的相互关系。
数据元素:数据的基本单位,在计算机中作为一个整体进行考虑和处理。一个数据元素由多个数据项组成。
数据项:数据项是数据的不可分割的最小单位。
大佬链接(侵删):
https://blog.csdn.net/qq_31196849/article/details/78529724
http://www.cnblogs.com/zhanggaofeng/p/5672610.html
数据的逻辑结构与物理结构间的关系:
逻辑结构:是指数据对象中数据元素之间的相互关系。
存在四种结构类型:
1. 集合结构:集合结构中的元素关系,除了同属于一个集合这个关系以外,再无其他关系。元素关系:孤立
2. 线性结构:线性结构类似于线性关系,也就是说,线性结构中的数据元素之间是一对一的关系。元素关系:一对一
3. 树形结构:树形结构中的数据元素之间存在一对多的关系(树状图)。元素关系:一对多
4. 图形结构:图形结构中的数据元素之间存在多对多的关系(蜘蛛网)。元素关系:多对多
关于逻辑结构,需要特别注意:
1. 逻辑结构与数据元素本身的形式,内容无关。
2. 逻辑结构与数据元素的相对位置无关。
3. 逻辑结构与所含数据元素的个数无关。
4. 逻辑结构与数据的存储无关,它是独立于计算机的。
物理结构:是指数据的逻辑结构在计算机中的存储形式(表示和实现)。是逻辑结构的存储映像,是数据的逻辑结构用计算机语言的实现。
存在四种结构类型:
1. 顺序存储结构:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。等同:数组
2. 链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。以附加信息(指针)表示后继关系。等同:指针
3. 索引存储结构:除数据元素存储在一地址连续的内存地址外,尚需建立一个索引表,兼有静态和动态作用。知识点表现: 查找 --分块查找
4. 散列存储结构:通过散列函数和解决冲突的方法,将关键字散列在连续的有限的地址空间内,并将散列函数的值解释成关键字所在元素的存储地址。
其特点是存取速度快,只能按关键字随机存取,不能顺序存取,也不能折半存取。知识点表现: 查找 --散列表
数据的逻辑结构和存储结构是密切相关的两个方面。
一般地,一种数据的逻辑结构根据需要可以用多种存储节后来存储,而采用不同的存储结构,其数据处理的效率往往是不同的。
大佬链接(侵删):
https://blog.csdn.net/qwen__/article/details/79122204
https://blog.csdn.net/YangTongA/article/details/78244252
https://www.cnblogs.com/Bill-LHR/p/6758867.html
https://blog.csdn.net/qq_39385118/article/details/80835048
2. 了解数据类型、抽象数据类型、数据抽象和信息隐蔽原则。
基本概念:
数据类型:在一种程序设计语言中,变量所具有的数据种类。(是一个值的集合和操作的集合)
例如:在C语言汇总数据类型:
基本类型:整形,浮点型,字符型,指针,枚举型
构造类型:数据,结构,联合
抽象数据类型(Abstract Data Type 简称ADT):指一个数学模型及定义在该模型上的一组操作。
抽象数据类型需要通过固有数据类型(高级编程语言中已实现的数据类型)来实现。
抽象数据类型是与表示无关的数据类型,是一个数据模型及定义在该模型上的一组运算。
对一个抽象数据类型进行定义时,必须给出它的名字及各运算的运算符名,即函数名,并且规定这些函数的参数性质。
一旦定义了一个抽象数据类型及具体实现,程序设计中就可以像使用基本数据类型那样,十分方便地使用抽象数据类型。
大佬链接(侵删):
https://blog.csdn.net/lauraran/article/details/78842001
3. 理解算法的定义、算法的特性、熟练掌握算法的时间代价及算法的空间代价计算方法。
基本概念:
定义:算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。
特性:有穷性、确定性、可行性、输入、输出
算法要求:正确性、可读性、健壮性、高效率与低存储量需求
时间复杂度:算法的时间复杂度是一个函数,它定性描述了该算法的运行时间。时间复杂度常用大O符号表述。
空间复杂度:对一个算法在运行过程中临时占用存储空间大小的量度。
一些计算时间复杂度的题:
https://www.jianshu.com/p/f4cca5ce055a
https://www.cnblogs.com/fanchangfa/p/3868696.html
http://c.biancheng.net/cpp/html/2653.html
大佬链接(侵删):
https://www.cnblogs.com/xydblog/p/3565363.html
https://blog.csdn.net/hgelin/article/details/79718648
https://www.cnblogs.com/FlySheep/p/4130193.html
4. 掌握用 C 语言描述算法的方法,能够使用 C 语言编写程序。