2022年数据结构复习要点 .pdf





《2022年数据结构复习要点 .pdf》由会员分享,可在线阅读,更多相关《2022年数据结构复习要点 .pdf(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、学习好资料欢迎下载第一章 绪论1.数据 (Data):是对客观事物的一种符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。包括数值,字符,图象,声音等。2.数据元素 (Data Element): 是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。一个数据元素可由若干个数据项组成。数据项是数据的不可分割的最小单位。3.数据对象 (Data Object) :是性质相同的数据元素的集合。是数据的一个子集。4.数据结构 (Data Structure) :是相互之间存在一种或多种特定关系的数据元素的集合。S = (D, R)其中 D 为数据元素的有限集,
2、R为 D 上关系的有限集。例 复数的数据结构定义如下:Complex=(C,R)其中: C 是含两个实数的集合C1,C2,分别表示复数的实部和虚部。 R=P , P是定义在集合上的一种关系C1,C2 。5.基本数据结构类型(根据数据元素之间的不同联系划分):A.集合B.线性结构C.树形结构D.图(网)状结构6.逻辑结构 / 数据结构: 数据元素及其关系的数学特性。7.物理结构 / 存储结构: 逻辑结构在计算机中的具体实现。8.数据类型 :指一个值的集合以及在这些值上定义的一组操作的总称。包括基本数据类型、结构数据类型。在 C语言中数据类型:基本类型和构造类型基本类型:整型、浮点型、字符型构造类
3、型:数组、结构、联合、指针、枚举型9.抽象数据类型(Abstract Data Type 简称 ADT):指抽象数据组织和与之相关的操作。每一个操作由它的输入和输出定义。抽象数据类型的定义取决于它的一组逻辑特性,而与其在计算机内的表示和实现无关。ADT可以定义为: (D,S,P) 其中 D 表示数据对象,S是 D 上的关系集,P是对 D 的基本操作集。ADT使用伪码描述为:ADT抽象数据类型名数据对象: 数据关系: 基本操作: ADT抽象数据类型名10.数据结构的研究内容:数据的逻辑结构(Logical structure ) 数据的存储结构(Storage structure 物理结构)数据
4、结构上的操作或处理(算法)数据的逻辑结构(简称数据结构):精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 40 页学习好资料欢迎下载线性结构: 有且仅有一个开始结点和终端结点,且所有结点最多只有一个直接前趋和直接后继。如:线性表,栈,队列非线性结构:一个结点可能有多个直接前趋和直接后继。如:树,图数据的存储结构: 顺序存储方法(Sequential Storage Structure): 数组 链接存储方法(Linked Storage Structure):指针 索引存储方法:索引表 散列存储方法:由关键字直接计算存储地址数据运算:定
5、义在逻辑结构上,而在物理结构上实现如:插入,删除,更新,查找,排序11.算法和算法分析程序= 算法+ 数据结构算法:是对特定问题求解步骤的一种描述, 算法是指令的有限序列,其中每一条指令表示一个或多个操作。算法具有以下五个特性:1) 有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。2) 确定性 : 算法中每一条指令必须有确切的含义。不存在二义性。相同输入只能得到相同输出。3) 可行性 :一个算法是可行的。即算法描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。4) 输入 :一个算法有零个或多个输入,这些输入取自于某个特定的对象集合。5) 输出 :一个算法有一
6、个或多个输出,这些输出是同输入有着某些特定关系的量。12.几种基本的算法设计方法1)枚举法 :从问题的所有可能答案中找出满足条件的解。e.g 买鸡问题:公鸡每只5 元,母鸡每只3 元,小鸡3 只一元, 100 元买 100 只鸡,有多少种买法?(算法见图一)图一图二2)归纳法: 找出问题的规律A. 递推:逐次推求中间结果和最后结果e.g 计算 Fibonacci 数列:数列第1 项为 1,第 2 项为 1,从第三项开始,每一项等于前两项之和。f = (1,1,2,3,5,8,13,21,34, )B. 递归:自己调用自己e.g 计算阶乘 : F(n)=F(n-1)*n, F(1)=1 (算法见
7、图二)C. 回溯法精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 40 页学习好资料欢迎下载通过 “ 试” 找到问题的解。如在一些游戏中,找出一个解决问题的途径,然后选出一条“ 试走 ” ,若此路不通,退回换路线重走。D. 数字模拟法:数字仿真问题很难建立数学模型,用随机数模拟随机现象。13.算法设计的要求评价一个好的算法有以下几个标准:(1)正确性 (Correctness ):算法应满足具体问题的需求。(2)可读性 (Readability):算法应该好读。以有利于阅读者对程序的理解。(3)健状性 (Robustness):算法应具
8、有容错处理。当输入非法数据时,算法应对其作出反应,而不是产年莫名其妙的输出结果。(4)效率与存储量需求:效率指的是算法执行的时间;存储量需求指算法执行过程中所需要的最大存储空间。一般,这两者与问题的规模有关。定理:若A(n)=a m n m +a m-1 n m-1 + +a1n+a0是一个 m 次多项式,则A(n)=O(n m)频度:是指该语句重复执行的次数例 for(i=2;i=n;+I)for(j=2;j=i -1;+j)+x;ai, j=x;语句频度为:1+2+3+ +n-2=(1+n-2)(n -2)/2=(n -1)(n-2)/2=n2-3n+2时间复杂度为O(n2)以下六种计算算
9、法时间的多项式是最常用的。其关系为: O(1)O(logn)O(n)O(nlogn) O(n2)O(n3)指数时间的关系为:O(2n)O(n!)data; p-next6.链表分类:?单链表:每个结点指针域中只有一个指向其后继结点的指针;?循环链表:将链表的最后一个结点与第一个结点连接起来,可从任意结点出发访问其它结点;?双向链表: 每个结点中有两个指针,一个指向其后继结点,另一个指向其前趋结点;7.单链表的基本运算1)建立单链表 : 设成员数据域为字符型A.头插法建表:依次插入新结点,并置于表头规律:新增加的结点指针域指向原head 指向的结点,然后将原head 指向新结点步骤:? 产生新结
10、点:产生一个指向新结点的指针变量,其数据域内容等于要插入的结点数据? 修改新结点指针域:令其指针域指向原来的第一个结点(由head 指向)? 修改头指针:将头指针head 指向插入的结点B.尾插法建表:插入的新结点置于表尾?产生一个新结点;?新结点的数据域为插入字符;?原尾指针指向新结点;精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 40 页学习好资料欢迎下载?新结点的指针域为空2)插入及删除运算3)查找运算4)8.头结点好处a、由于开始结点的位置被存放在头结点的指针域中,所以在链表的第一个位置上的操作就和在表的其它位置上的操作一致,
11、无需进行特殊处理;b、无论链表是否为空,其头指针是指向头结点的非空指针(空表中头结点的指针域为空),头指针始终不为空,因此空表和非空表的处理也就统一了9.循环链表循环链表时一种头尾相接的链表。其特点是无须增加存储量,仅对表的链接方式稍作改变,即可使得表处理更加方便灵活。单循环链表: 在单链表中,将终端结点的指针域NULL改为指向表头结点的或开始结点,就得到了单链形式的循环链表,并简单称为单循环链表。为了使空表和非空表的处理一致,循环链表中也可设置一个头结点。这样, 空循环链表仅有一个自成循环的头结点表示。如下图所示:精选学习资料 - - - - - - - - - 名师归纳总结 - - - -
12、 - - -第 6 页,共 40 页学习好资料欢迎下载在用头指针表示的单链表中,找开始结点a1的时间是O(1),然而要找到终端结点an,则需从头指针开始遍历整个链表,其时间是O(n)在很多实际问题中,表的操作常常是在表的首尾位置上进行,此时头指针表示的单循环链表就显得不够方便.如果改用尾指针rear 来表示单循环链表,则查找开始结点a1和终端结点an都很方便,它们的存储位置分别是(rear next) next和 rear,显然,查找时间都是O(1)。因此,实际中多采用尾指针表示单循环链表。由于循环链表中没有NULL指针,故涉及遍历操作时,其终止条件就不再像非循环链表那样判断p 或 pnext
13、 是否为空,而是判断它们是否等于某一指定指针,如头指什或尾指针等。10.双链表双向链表 (Double linked list):在单链表的每个结点里再增加一个指向其直接前趋的指针域 prior 。这样就形成的链表中有两个方向不同的链,故称为双向链表。形式描述为:和单链表类似,双链表一般也是由头指针唯一确定的,增加头结点也能使双链表上的某些运算变得方便,将头结点和尾结点链接起来也能构成循环链表,并称之为双向链表。设指针 p 指向某一结点,则双向链表结构的对称性可用下式描述:(p prior) next = p =(p next) prior即结点 *p 的存储位置既存放在其前趋结点*(p pr
14、ior) 的直接后继指针域中,也存放在它的后继结点 *(p next)的直接前趋指针域中。11.顺序表与链表的比较与选择线性表的长度是否固定:表长固定时用顺序表,表长不固定时用链表线性表的主要操作是什么:主要是查找时用顺序表,有较多插入、删除时用链表根据采用的算法语言:必须有指针类型时才能用链表第三章 栈与队列1. 栈定义:栈是限制在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶 (Top),另一端为栈底(Bottom) 。当表中没有元素时称为空栈。特性:后进先出(LIFO:Last In First Out ) ,先进后出(FILO: First In Last Out)
15、2. 顺序栈定义:用一维数组存储的栈。栈底固定不变,栈顶动态变化。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 40 页学习好资料欢迎下载typedef int datatype;#define StackSize 100struct Stack datatype elementsStackSize;int Top; /Top 表示顺序栈中栈顶之上的位置,/ 该位置将存放新的栈顶元素,当Top=0 表示空栈; / 注: Top 相当于栈内元素的个数当栈满时再做进栈运算必定产生空间溢出,简称“ 上溢 ”;当栈空时再做退栈运算也将产生溢出
16、,简称“ 下溢 ” 。基本操作:3. 链栈4. 栈的应用举例1)数制转换十进制数 N 和 d 进制数之间转换的算法原理:N=( N / d ) * d + N % d精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 40 页学习好资料欢迎下载即2)表达式求值算术四则运算规则:(1)先乘除,后加减;(2)从左算到右;(3)括号优先。四则运算由操作数(operand)和运算符 (operator) 构成。任意两个顺序出现的运算符1、 2的优先关系:1 2:1的优先级高于2。过程描述:(1)栈顶算符待比较算符,弹出栈顶算符,同时连续弹出数据栈内
17、的两个栈顶数据,进行计算,结果放回数据栈。待比较算符不变;(3)栈顶算符=待比较算符,弹出栈顶算符。(4)如果栈顶算符为#,计算结束。3)递归调用4)地图染色问题(回溯问题)用不多于四种的颜色对地图着色,使相邻的行政区域不重色基本思想: 行政区与颜色分别编号,从(1)号行政区开始,每个区域依次用颜色进行试探,若当前颜色与周围区域不重色,则用栈记下该区域的颜色序号,否则用下一颜色进行试探;若用四种颜色试探均重色,则需退栈回溯,修改栈顶颜色序号,再进行试探。直到满足要求。5)背包问题已知 n 件物品各自的体积,背包容积为T,要求从 n 件中找出若干物物品,其体积之和恰好等于背包容积,看是否有解。解
18、决思路: 顺序栈 S用来存放放入背包内的物品序号(最多有n 个元素);参数 T 动态计算背包还可装入的重量;依次装入试验,不满足时从后往前回溯。5. 栈和队列的区别栈:只能在一端进行插入与删除操作,栈顶队列:插入在一端进行,删除在另一端进行6. 队列定义: 只允许在表的一端进行插入,而在另一端进行删除操作的线性表。队头( Front) :允许删除的一端(出队);队尾( Rear) :允许插入的一端(入队);1210121.nnNaadadad)1()2()1()1(1)0(0)(nnFibnFibnnnFib精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - -
19、 -第 9 页,共 40 页学习好资料欢迎下载特性: 先进先出( First In First Out, FIFO )7. 队列的存储结构1)顺序队列用数组存放队列中的元素,设置两个指针分别指示当前队头元素和队尾元素在数组中的位置。头指针 front 指向队头元素;尾指针 rear 指向队尾元素后一个位置。下溢: 队列为空时再做出队操作。上溢: 队列满时再做入队操作。假上溢: 尾指针等于数组上界时,即使队列不满,再进行入队也会产生上溢。解决方法:1. 每次出队时将整个队列的元素向前移动一个位置;2. 发生假上溢时将整个队列中的元素向前移动直到头指针为0;2)循环队列: 令数组 datamaxs
20、ize是一个首尾相接的圆环3)顺序队列的运算4)链队列仅在表头删除并仅在表尾插入的单链表,一个链队由一个头指针和一个尾指针惟一确定。建立在单链表定义的基础上, 在队头结点前附加一个头结点,头指针指向头结点。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 40 页学习好资料欢迎下载第四章 串1. 定义串,又称为字符串, 是不同于数值的一种数据类型,需要不同于一般数值的数据处理与存储形式。串(String)是由零个或多个字符组成的有限序列,一般记为:s = a1a2a3an (n 0)其中,单引号内的字符序列为串的值,ai(1in)可以是
21、字母、数字或其他字符;2. 基本概念长度: 串的字符数量n: str= abc123 长度 n=strlen(str)=6空串 :长度为0 的串;str= 为空串 ; Not ?,后者称为 空格串子串 :串中任意个连续的字符组成的子序列;str= abcdefg123456str1= cde ,str2= fg1234 ,str1、 str2 都是 str 的子串str1= fg 123 ,str2= bcdc ,str1、str2 都非 str 的子串主串: 包含子串的串;位置 :字符在串中的序号。对于子串,位置是指其第一个字符在主串中的序号;Str= abcdef123456 , str1
22、= e ,str2= 23,str3= f123 Str1 在 str 中的位置为5,str2 在 str 中的位置为8, str3 在 str 中的位置为6,str2 在 str3 中的位置为3相等串: 长度相同,同时各位置上的字符都相等的两个串称为相等串。3. 串的特点串的逻辑结构同于线性表。串的数据对象为字符集。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 40 页学习好资料欢迎下载线性表中处理对象为“ 单个元素 ” ,而串往往以“ 串的整体 ” 为对象。4. 串与字符的区别字符是单个元素,串是一个字符集序列;字符是串的基本构
23、成元素字符没有长度的概念,串有长度即使长度为0字符与串的定义一般不同5. 串的表示方法三种方法:6. 定长顺序存储表示: 与线性表的顺序存储结构基本相同,但增加了一个单元存储串长度。另一种方式, 不存储串长度, 而是在串的结尾加一个特定字符。缺点: 串长度隐性表示,无法直观得到 (c 采用这种方法,最后是0 )。7.堆分配存储表示:这种存储表示的特点是,仍以一组地址连续的存储单元存放串值字符序列,但它们的存储空间是在程序执行过程中动态分配而得。所以也称为动态存储分配的顺序表。在C语言中,利用动态存储管理函数malloc, 来根据实际需要动态分配和释放字符数组空间。这样定义的顺序串类型也有两种形
24、式。8.块链存储表示单链串 : 和线性表的链式存储相同。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 40 页学习好资料欢迎下载块链 :和线性表的链式存储相同。每个结点存放多个字符,结点又称为块。9.串模式匹配设有两个串t 和 p : t = t0t1tn-1,p = p0p1p m-1其中1m=n(通常mn)模式匹配的目的是在t 中找出和p 相同的子串。此时, t 称为“目标” ,而 p 称为“模式” 。模式匹配的结果有两种:匹配成功: t 中存在等于p 的子串,返回子串在t 中的位置匹配失败:返回一个特定的标志(如-1) 。朴素
25、的模式匹配p 中字符依次与t 中字符一一比较:如果对于所有的i( 0=i=m-1), 皆有 tj+i = pi,则匹配成功,返回位置j;否则,此趟匹配失败,这时将p 右移一个字符,进行下一趟匹配:直到匹配成功或p 移动到无法与t 继续比较为止(匹配失败)。时间复杂度朴素模式匹配算法一旦比较不等,p 右移一个字符并且下次从p0开始重新进行比较,对于目标t,存在回溯现象。匹配失败的最坏情况:每趟匹配皆在最后一个字符不等,且有n-m+1 趟匹配 (每趟比较 m 个字符), 共比较 m*(n -m+1)次,由于 mn, 因此最坏时间复杂度O(n*m) 。匹配失败的最好情况:n-m+1 次比较 每趟只比
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年数据结构复习要点 2022 数据结构 复习 要点

限制150内