本文整理自《2018版数据结构高分笔记》
不考研我为什么看这本书呢?因为写的详细易懂!强推!
好啦,进入正题。
1、数据结构的基本概念
1.1数据
数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并且被计算机程序处理的符号的总称。例如:整数、实数和字符串都是数据。
1.2 数据元素
数据元素是数据的基本单位,在计算机程序中通常将其作为一个整体进行考虑和处理。
1.3数据项
数据项是数据结构中讨论的最小单位,是数据记录中最基本的、不可分的数据单位。
1.4 数据对象
数据对象是性质相同的数据元素的集合,是数据的一个自己,比如大写字母就是一个数据对象。
1.5 数据结构
数据结构指相互之间存在一种或多种特定关系的数据元素的集合。数据结构包括3方面的内容:逻辑结构,存储结构以及对数据的运算。
1.6 数据的逻辑结构
数据的逻辑结构是对数据之间关系的描述,它与数据的存储机构无关,同一种逻辑结构可能有多种存储结构。归纳起来数据的逻辑结构有两大类:线性结构和非线性结构。
1.7 数据的物理结构
数据的物理结构又称为存储结构,是数据的逻辑结构在计算机中的表示,它包括数据元素的表示和关系的表示。数据元素之间的关系在计算机中有两种不同的表示方法:顺序映像和非顺序映像。对应的两种不同的存储结构分别是顺序存储结构和链式存储结构。实际上,数据结构中有一下4种常用的存储方法。
顺序存储方法
逻辑上相邻的结点存储在物理位置相邻的存储单元中。
链式存储方法
链式存储方法不要求逻辑上相邻的结点在物理位置上也相邻,结点间的逻辑关系是由附加的指针字段表示的。
索引存储方法
索引存储方法在存储结点信息时除建立存储结点信息外,还建立附加的索引表来标识结点的地址。索引项的一般形式是<关键字,地址>。关键字标识唯一一个结点,地址作为指向结点的指针。
散列存储方法
散列存储方法的基本思想是根据结点的关键字通过散列函数直接计算出该结点的存储地址。
题外话:如何判断什么是逻辑结构,什么是存储结构,只需要看这种结构到底有没有具体到使用顺序存储、链式存储、索引存储还是散列存储,如果具体到了,那就是存储结构,如果没有具体到,就是逻辑结构,比如下面的题目:
下述()与数据的存储结构无关:栈、双向链表、散列表、线索树、循环队列,我们很容易知道答案是栈,因为栈既可以是顺序存储,也可以是链式存储。
2、算法的基本概念
2.1 算法
算法可以理解为由基本运算及规定的运算顺序所构成的完整的解题步骤,或者看成按照要求设计好的有限的确切的计算序列。
2.2 算法的特性
一个算法应该有以下五个重要的特性:
有穷性:一个算法必须保证执行有限步之后结束
确定性:算法的每一个步骤必须有确定的定义
输入:一个算法有0个或者多个输入,以刻画运算对象的初始情况。
输出:一个算法有一个或者多个输出,以反应对输入数据加工后的结果。
可行性:算法中的所有操作都必须可以通过已经实现的基本操作进行远算,并在有限次内实现,而且人们用笔和纸做有限次运算后也可完成。
2.3 算法的设计目标
算法设计目标包括正确性、可读性、健壮性、和算法效率四个方面,其中算法效率可以通过算法的时间复杂度和空间复杂度来描述。
正确性:要求算法能够正确的执行预先规定的功能和性能要求。这是最重要也是最基本的标准。
可读性:要求算法易于人的理解
健壮性:要求算法有很好的容错性,能够对不合理的数据进行检查。
高效率与低存储量需求