数据结构复习汇编学习教案.pptx
《数据结构复习汇编学习教案.pptx》由会员分享,可在线阅读,更多相关《数据结构复习汇编学习教案.pptx(93页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、会计学1数据结构数据结构(sh j ji u)复习汇编复习汇编第一页,共93页。n n数据结构(jigu)(Data Structure):是相互之间存在一种或多种特定关系的数据元素的集合。n n数据结构(jigu)分为逻辑结构(jigu)和存储结构(jigu)(物理结构(jigu))第1页/共93页第二页,共93页。数据数据数据数据(shj)(shj)(shj)(shj)的逻辑结构:的逻辑结构:的逻辑结构:的逻辑结构:数据数据数据数据(shj)(shj)(shj)(shj)元素之间的逻辑关系,分:元素之间的逻辑关系,分:元素之间的逻辑关系,分:元素之间的逻辑关系,分:集合集合集合集合数据数据
2、数据数据(shj)(shj)(shj)(shj)元素间除元素间除元素间除元素间除“同属于一个同属于一个同属于一个同属于一个集合集合集合集合”外,无其它关系外,无其它关系外,无其它关系外,无其它关系线性结构线性结构线性结构线性结构一个对一个,如线性表、栈、一个对一个,如线性表、栈、一个对一个,如线性表、栈、一个对一个,如线性表、栈、队列队列队列队列树形结构树形结构树形结构树形结构一个对多个,如树一个对多个,如树一个对多个,如树一个对多个,如树图状结构图状结构图状结构图状结构多个对多个,如图或网多个对多个,如图或网多个对多个,如图或网多个对多个,如图或网概念概念概念概念(ginin)(ginin)
3、(ginin)(ginin)及术语及术语及术语及术语第2页/共93页第三页,共93页。数据的存储结构数据的存储结构数据的存储结构数据的存储结构数据的逻辑数据的逻辑数据的逻辑数据的逻辑(lu j)(lu j)(lu j)(lu j)结构在计算机存储设备中的映结构在计算机存储设备中的映结构在计算机存储设备中的映结构在计算机存储设备中的映射,分:顺序存储结构、链式存储结构。射,分:顺序存储结构、链式存储结构。射,分:顺序存储结构、链式存储结构。射,分:顺序存储结构、链式存储结构。n顺序存储:n以相对的存储位置表示逻辑关系n n链式存储n以以附加指针表示后继(huj)关系 a1 a2 a3a2 a1概
4、念概念概念概念(ginin)(ginin)(ginin)(ginin)及术语及术语及术语及术语第3页/共93页第四页,共93页。2 2算法算法算法算法(sun f)(sun f)和算法和算法和算法和算法(sun f)(sun f)分析分析分析分析1算法算法(sun f)概念概念 对特定问题求解步骤的一种描述,是指令对特定问题求解步骤的一种描述,是指令(zhlng)的有限的有限序列,每条指令序列,每条指令(zhlng)表示一个或多个操作。算法应具备的表示一个或多个操作。算法应具备的特性:特性:(2 2)确定性:指令具有确切的含义,相同的输入有相同的输指令具有确切的含义,相同的输入有相同的输出。出
5、。(1 1)有穷性:对合法的输入值在执行有穷步之后结束。对合法的输入值在执行有穷步之后结束。(3 3)可行性:所有操作可经已实现的基本运算执行有限次所有操作可经已实现的基本运算执行有限次来实现来实现(4 4)输入:0 0个或多个个或多个(5 5)输出:一个或多个一个或多个第4页/共93页第五页,共93页。(2 2)可读性:便于阅读)可读性:便于阅读(yud)(yud)和交流和交流(3 3)健壮性)健壮性:能够对输入的非法数据:能够对输入的非法数据(shj)(shj)作出反应和作出反应和处理处理(4 4)效率与低存储量需求:效率指算法的执行时间;存)效率与低存储量需求:效率指算法的执行时间;存储
6、量需储量需 求指算法执行过程求指算法执行过程(guchng)(guchng)中所需要的最大存中所需要的最大存储空间。储空间。2 2算法设计的要求算法设计的要求算法设计的要求算法设计的要求(1 1)正确性:算法应满足具体问题的需求。算法应满足具体问题的需求。a.a.程序不含语法错误程序不含语法错误b.b.对于几组输入可得满足要求的结果对于几组输入可得满足要求的结果c.c.对于精心选择的几组典型、苛刻、带有刁难性的输入数据对于精心选择的几组典型、苛刻、带有刁难性的输入数据可得满足要求的结果可得满足要求的结果 d.d.对一切合法的输入数据都能得出产生要求的结果对一切合法的输入数据都能得出产生要求的结
7、果 第5页/共93页第六页,共93页。3 3算法效率的度量算法效率的度量4 4算法的时间效率主要由两个因算法的时间效率主要由两个因素决定:素决定:5 5l所需处理问题的数据量大小,所需处理问题的数据量大小,数据量大,所花费的时间就多;数据量大,所花费的时间就多;6 6l在解决问题的过程中,基本操在解决问题的过程中,基本操作的执行次数作的执行次数7 7时间复杂度:算法中基本操作时间复杂度:算法中基本操作重复执行的次数是问题规模重复执行的次数是问题规模n的某的某个函数,个函数,T(n)=O(f(n)8 8 好的算法应该能够在数据量好的算法应该能够在数据量n增长的同时增长的同时(tngsh),函数,
8、函数T(n)的增长速度比较缓慢。的增长速度比较缓慢。第6页/共93页第七页,共93页。常见常见(chn jin)函数的增长率函数的增长率第7页/共93页第八页,共93页。n n一个算法时间为O(1)的算法,它的基本运算执行的次数是固定的。总时间由一个常数(chngsh)(即零次多项式)来限界。一个时间为O(n2)的算法由一个二次多项式来限界。n n以下六种计算算法时间的多项式是最常用的。关系为:n n O(1)O(logn)O(n)n n O(nlogn)O(n2)O(n3)n n指数时间的关系为:O(2n)O(n!)O(nn)第8页/共93页第九页,共93页。第二章第9页/共93页第十页,共
9、93页。1 1线性表:是n0个性质相同的数据元素的有限序列(xli)。线性表可记作(a1,a2,an)n 02 2基本操作:3 3建立、存取、插入、删除、检索、分解、排序等。4 4 第10页/共93页第十一页,共93页。(a1,ai-1,ai,an)改变(gibin)为(a1,ai-1,e,ai,an)a1a2ai-1ai ana1a2ai-1ai ean表的长度(chngd)加12基本运算基本运算3在线性表第在线性表第i(1i n+1)个位置上插入)个位置上插入(ch r)元素元素e第11页/共93页第十二页,共93页。注意:注意:注意:注意:C C语言中的数组下标从语言中的数组下标从语言中
10、的数组下标从语言中的数组下标从“0”“0”开始,因此,若开始,因此,若开始,因此,若开始,因此,若L L是是是是SqlistSqlist类型的顺序表,则表中第类型的顺序表,则表中第类型的顺序表,则表中第类型的顺序表,则表中第i i个元素是个元素是个元素是个元素是l.elemi-1l.elemi-1。status insert_sq(Sqlist&Lstatus insert_sq(Sqlist&L,elemtype eelemtype e,int i)int i)if(iL.length+1)/if(iL.length+1)/检查检查检查检查i i值是否合理值是否合理值是否合理值是否合理 re
11、turn ERROR;return ERROR;if(L.length=ListSize)/if(L.length=ListSize)/判断是否溢出判断是否溢出判断是否溢出判断是否溢出 exit(overflow);exit(overflow);for(j=L.length-1;j=i-1;j-)for(j=L.length-1;j=i-1;j-)L.elemj+1=L.elemj;/L.elemj+1=L.elemj;/腾出腾出腾出腾出(tn(tn ch)ch)第第第第i i个个个个位置位置位置位置 L.elemi-1=e;L.elemi-1=e;/插入插入插入插入 L.length+;L.
12、length+;/当前表长加当前表长加当前表长加当前表长加1 1 return OK;return OK;第12页/共93页第十三页,共93页。这里这里这里这里(zhl(zhl)的问题规模是表的长度,设它的值为的问题规模是表的长度,设它的值为的问题规模是表的长度,设它的值为的问题规模是表的长度,设它的值为n n。该算。该算。该算。该算法的时间主要花费在循环的元素后移语句上,所需移动元法的时间主要花费在循环的元素后移语句上,所需移动元法的时间主要花费在循环的元素后移语句上,所需移动元法的时间主要花费在循环的元素后移语句上,所需移动元素的次数不仅依赖于表的长度,而且还与插入位置有关。素的次数不仅依
13、赖于表的长度,而且还与插入位置有关。素的次数不仅依赖于表的长度,而且还与插入位置有关。素的次数不仅依赖于表的长度,而且还与插入位置有关。i i位置位置位置位置移动次数移动次数移动次数移动次数 1 1n n 2 2n-1n-1 i in-i+1n-i+1 n+1 n+10 0平均移动次数:平均移动次数:平均移动次数:平均移动次数:时间复杂度:时间复杂度:时间复杂度:时间复杂度:OO(n n)第13页/共93页第十四页,共93页。(a1,ai-1,ai,ai+1,an)改变(gibin)为(a1,ai-1,ai+1,an)ai+1an表的长度(chngd)减1a1a2ai-1aiai+1 ana1
14、a2ai-12.2.在线性表中删除在线性表中删除(shnch)(shnch)第第i i(1 i n1 i n)个元素,使)个元素,使第14页/共93页第十五页,共93页。status delete_sq(Sqlist&L,int i,elemtype&e)if(iL.length)/检查i值是否合理return ERROR;e=L.elemi-1;/C下标从0开始(kish)for(j=i;j=L.length-1;j+)L.elem j-1=L.elem j;/删除 L.length-;return OK;第15页/共93页第十六页,共93页。该算法的时间分析与插入算法相似,结点的移动次数也
15、是由表长该算法的时间分析与插入算法相似,结点的移动次数也是由表长该算法的时间分析与插入算法相似,结点的移动次数也是由表长该算法的时间分析与插入算法相似,结点的移动次数也是由表长n n和位置和位置和位置和位置i i决定决定决定决定(judng)(judng)。i i位置位置位置位置移动次数移动次数移动次数移动次数 1 1n-1n-1 2 2n-2n-2 i in-in-i n n0 0平均移动次数:平均移动次数:平均移动次数:平均移动次数:时间复杂度:时间复杂度:时间复杂度:时间复杂度:OO(n n)第16页/共93页第十七页,共93页。第三章第三章 栈和队列栈和队列(duli)(duli)栈和
16、队列也可以栈和队列也可以(ky)被称被称作为操作受限的线性表。作为操作受限的线性表。第17页/共93页第十八页,共93页。思考:假设有思考:假设有A,B,CA,B,C三个元素进三个元素进S S栈栈的顺序的顺序(shnx)(shnx)是是A,B,CA,B,C,写出所有可能的出栈序列。写出所有可能的出栈序列。CBAACBABCCABBACBCA第18页/共93页第十九页,共93页。1.栈属于加了限制条件的线性结构;栈属于加了限制条件的线性结构;2.栈是后进先出的线性表;栈是后进先出的线性表;3.进栈和出栈只能从栈顶进行;进栈和出栈只能从栈顶进行;4.栈中的元素个数可以是栈中的元素个数可以是0(空栈
17、);(空栈);5.栈的元素的个数不能是无穷栈的元素的个数不能是无穷(wqing)多个;多个;6.每个栈中的元素的类型相同每个栈中的元素的类型相同.栈的特性栈的特性(txng)第19页/共93页第二十页,共93页。队列(队列(queuequeue)是一种)是一种(y(y zhn)zhn)只允许在一端进行插入,而只允许在一端进行插入,而在另一端进行删除的线性表,它是在另一端进行删除的线性表,它是一种一种(y zhn)(y zhn)操作受限的线性表。操作受限的线性表。3.2 3.2 队列队列(duli)(Queue)(duli)(Queue)队列队列(duli)(duli)的定义及其运算的定义及其运
18、算第20页/共93页第二十一页,共93页。n n定义n n允许(ynx)删除的一端叫做队头(front),允许(ynx)插入的一端叫做队尾(rear)。n n特性n n先进先出(FIFO,First In First Out)a0 a1 a2 an-1frontrear第21页/共93页第二十二页,共93页。依次 1 2 3 4 5 6 删除两个元素(yun s)之后的头元素(yun s)是?第22页/共93页第二十三页,共93页。第四章第四章 串串 零个或多个字符(z f)组成的有限序列。一般记S=a1a2.an 其中,S是串名,单引号括起的字符(z f)序列是串值;2 2、串长、串长 串中
19、所包含(bohn)的字符个数3 3、空串、空串长度(chngd)为零的串,它不包含任何字符。1 1、串、串4 4、空格串、空格串由一个或多个空格组成的串,其长度为串中空格字符的个数。第23页/共93页第二十四页,共93页。第五章第24页/共93页第二十五页,共93页。5.3 广义表的定义广义表的定义一、广义表(一、广义表(General List)广义表中的元素即可以是单个元广义表中的元素即可以是单个元素(称为原子素(称为原子(yunz))也可以是)也可以是广义表(称为子表)。广义表(称为子表)。一般表示:一般表示:LS=(a1,a2,an)习惯上广义表名用大写字母,原习惯上广义表名用大写字母
20、,原子子(yunz)用小写字母用小写字母当当LS非空时,非空时,a1称为称为LS 的表头的表头(head),其余元素组成的表(),其余元素组成的表(a2,an)称为表尾()称为表尾(tail)。)。第25页/共93页第二十六页,共93页。例:例:例:例:A=()A=()B=(e)B=(e)C=(a,(b,c,d)C=(a,(b,c,d)D=(A,B,C)D=(A,B,C)E=(a,E)E=(a,E)F=(a,b,(c,(d)F=(a,b,(c,(d)广义表特点:广义表特点:广义表特点:广义表特点:允许递归,可共享子表允许递归,可共享子表允许递归,可共享子表允许递归,可共享子表元素不仅有先后次序
21、,而且有层次关系元素不仅有先后次序,而且有层次关系元素不仅有先后次序,而且有层次关系元素不仅有先后次序,而且有层次关系(gun x)(gun x)元素的层次:是包括该元素的括号对数元素的层次:是包括该元素的括号对数元素的层次:是包括该元素的括号对数元素的层次:是包括该元素的括号对数表深:广义表中元素的最大层次表深:广义表中元素的最大层次表深:广义表中元素的最大层次表深:广义表中元素的最大层次第26页/共93页第二十七页,共93页。2 2广义表的存储结构广义表的存储结构(jigu)(通常用链式)(通常用链式)3 3广义表的扩展线性链表存储广义表的扩展线性链表存储4 4typedef struct
22、 glnode5 5int tag;/0 原子结点;原子结点;1 子子表结点表结点6 6union7 7 atomtype atom;/原子结原子结点的值域点的值域8 8 struct glnode*hp;/子表子表表头指针表头指针9 91010struct glnode*next;/下一下一元素指针元素指针1111*glist;第27页/共93页第二十八页,共93页。例:例:例:例:A=();B=(e);C=(a,(b,c,d);D=(A,B,C);E=(a,E)A=();B=(e);C=(a,(b,c,d);D=(A,B,C);E=(a,E)都设一附加表头都设一附加表头都设一附加表头都设一
23、附加表头(bi(bi o tu)o tu)结点结点结点结点1 A1B0 e 1C0a10 b0 c0 d 11 11D10 a1E第28页/共93页第二十九页,共93页。作业作业作业作业(zuy)(zuy)练习练习练习练习求下列广义表操作求下列广义表操作求下列广义表操作求下列广义表操作(cozu)(cozu)的结果:的结果:的结果:的结果:GetHeadGetHead【(p,h,w)(p,h,w)】;】;】;】;GetTailGetTail【(b,k,p,h)(b,k,p,h)】;】;】;】;GetHeadGetHead【(a,b),(c,d)(a,b),(c,d)】;】;】;】;GetTai
24、lGetTail【(a,b),(c,d)(a,b),(c,d)】;GetHeadGetHead【GetTailGetTail【(a,b),(c,d)(a,b),(c,d)】GetTailGetTail【GetHeadGetHead【(a,b),(c,d)(a,b),(c,d)】GetHeadGetHead【GetTailGetTail【GetHeadGetHead【(a,b),(c,d)(a,b),(c,d)】GetTailGetTail【GetHeadGetHead【GetTailGetTail【(a,b),(c,d)(a,b),(c,d)】第29页/共93页第三十页,共93页。第六章第30
25、页/共93页第三十一页,共93页。ABCDEFGHK例如例如(lr):先序序列先序序列(xli):中序序列中序序列(xli):后序序列:后序序列:A B C D E F G H KB D C A E H G K FD C B H K G F E A二叉树的遍历层次序列:层次序列:A B E C F D G H K第31页/共93页第三十二页,共93页。根据二叉树的遍历根据二叉树的遍历(bin l)(bin l)构构造二叉树造二叉树3 3结点的结点的5 5棵二叉树的棵二叉树的3 3种遍历种遍历序列如表所示。存在序列如表所示。存在(cnzi)(cnzi)情况情况:ABCABCABCABCCAB第3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 复习 汇编 学习 教案
限制150内