自考数据结构-串讲笔记复习进程.ppt
《自考数据结构-串讲笔记复习进程.ppt》由会员分享,可在线阅读,更多相关《自考数据结构-串讲笔记复习进程.ppt(210页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、自考数据结构-串讲笔记课程说明课程说明知识点:知识点:线形表、栈、队列、数组、广义表、树、图、查找和排序。第一章绪论第一章绪论基本概念与术语基本概念与术语数据结构:数据结构:是一门研究非数值计算的程序设计问题中计算机的操作对象及他们之间关系和操作等的学科。(一)数据结构概念包括三个方面(一)数据结构概念包括三个方面(三要素三要素)数据之间的逻辑关系(逻辑结构)数据在计算机中的存储方式(存储结构)实现数据操作的算法(数据的运算)(二)、相关术语(二)、相关术语1 1、数据:、数据:能输入计算机并能计算机程序处理的符号的总称。2 2、数据元素:、数据元素:数据的基本单位。可以进一步细分为若干数据项
2、,数据项是最小单位,不能再细分。3 3、数据对象:、数据对象:具有相同性质的数据元素的集合,是数据的一个子集。4 4、(1 1)数据的逻辑结构:)数据的逻辑结构:数据之间的关系。数据之间的关系。A.A.集合(无顺序):集合(无顺序):B.B.线性结构(一对一):线性结构(一对一):C.C.树形结构(一对多):树形结构(一对多):D.D.网状、图结构(多对多):网状、图结构(多对多):()数据的存储结构(物理结构)()数据的存储结构(物理结构)数据结构在计算机中的表示。(种)A.A.顺序表示顺序表示借助数据在连续连续的存储空间中的相对位置表示元素关系。B.B.链式表示链式表示借助数据元素的存储地
3、址的指针指针表示元素关系。2.2.算法和算法分析算法和算法分析一、算法一、算法定义:定义:是对特定问题求解步骤的一种描述,是指令的有限序列。特点:特点:有穷性确定性可行性零个或多个输入一个或多个输出大大O O表示法表示法大O表示同级别例:f(n)=n2,f(n)=1/2(n(n-1),f(n)=(n-1)(n+2)均表示为:O(n2)加法规则:若T1(n)=O(f1(n),T2(n)=O(f2(n)则两段程序连在一起的时间代价为:T(n)=T1(n)+T2(n)=O(max(f1(n),f2(n)例例:语句段语句段 频度频度f(n)f(n)时间复杂度时间复杂度T(n)T(n)x=x+11O(1
4、)for(j=1;j=3n+5;j+)3n+5O(n)x=x+1;for(i=1;i=3n;i+)3n2O(n2)for(j=1;j=n;j+)x=x+1;i=0;n+1O(n)while(x!=ai&i=n)i=i+1;求时间复杂度的原则求时间复杂度的原则当重复执行次数与输入有关时,计算平均值。平均复杂度不易求时,讨论最坏情况下的T(n)。更多优质自考资料尽在百度贴吧自考乐园俱乐部(http:/ n增大增大,T(n)T(n)增加快增加快,算法坏算法坏随问题规模随问题规模n n增大增大,T(n)T(n)趋缓趋缓,算法好算法好T(n)T(n)的增大趋势的增大趋势:O(1)O(log2n)O(n)
5、O(nlog2n)O(n2)O(nk)O(2n)O(en)0时,线性表中各元素都有确定序号线性表中各元素除第一个元素没有前驱、最后一个元素没有后继外,均具有唯一的前驱、后继元素(a a1 1,a,a2 2,a,ai-1i-1,a,ai i,a,ai+1i+1,a,an n)无前驱无前驱直接前驱直接前驱直接后继直接后继无后继无后继第二章线性表第二章线性表2.2.线性表的顺序存储结构线性表的顺序存储结构一、线性表的顺序存储一、线性表的顺序存储在计算机内开辟一片连续连续空间(存储单元)依次存放表中所有元素。设线性表为A(a1,a2,ai,an),表中的一个元素占用L个存储单元,第一个元素a1的起始地
6、址是Loc(a1),则第i个元素的起始地址为:Loc(ai)=Loc(a1)+(i-1)*LLoc(ai)=Loc(a1)+(i-1)*La1 a2 ai an连续空间连续空间3.3.线性表的链式存储结构线性表的链式存储结构一、单链表一、单链表定义定义:存储空间上一个结点对应线性表上一个元素,结点分为两个字段(或两个域)。一个字段存放元素的数据值;另一个字段存放指针,指向后继元素。结点:结点:DataPointer两个概念:两个概念:头指针头指针:指示链表中第一个结点。头结点头结点:在第一个结点之前附设的结点,其指针域指向链表中第一个结点。在链表中第i个结点前插入新结点b(前插)算法分析:算法
7、分析:基本操作:查找第i-1个元素当1in 频度为:i-1当in(最坏,即i不合法)频度为:nT(n)=O(n)二、循环链表二、循环链表特点特点尾结点的next指针指向头结点,可以设头结点和尾结点指针。优点优点可迅速找到头、尾结点。a1 an HeadHead空表空表三、双向链表和双向循环链表三、双向链表和双向循环链表特点:特点:在结点中增加一个指向前趋的指针域。优点:优点:可迅速找到结点前趋。缺点:缺点:增加存储空间。(每个结点增加了一个指针域)双向链表双向链表a1a2双向循环链表双向循环链表a2a12 2、基本操作、基本操作(1 1)插入)插入:在链表的x结点前插入元素e步骤:步骤:a.在
8、链表中查找x结点b.申请结点空间s,s-data=ec.先做s-prior=p-prior;p-prior-next=s;d.后做s-next=p;p-prior=s;axpes(本章结束)(2 2)删除)删除:删除双向循环链表中的结点x步骤:步骤:a.在链表中查找x结点b.删除:p-prior-next=p-next;p-next-prior=p-prior;c.free(p)axcp第第3 3章栈与队列章栈与队列1.1.栈栈一、栈的描述一、栈的描述1.1.栈的定义栈的定义2.2.栈的特点栈的特点:后进先出(后进先出(LIFOLIFO)1,2,3,41,2,3,4顺序进栈,有多少种出栈的情况
9、?顺序进栈,有多少种出栈的情况?S Sn n=s=s0 0s sn-1n-1+s+s1 1S Sn-2n-2+s+sn-2n-2s s1 1+s+sn-1n-1s s0 0S S0 0=1,s=1,s1 1=1=1更多优质自考资料尽在百度贴吧自考乐园俱乐部(http:/ 1、栈的顺序存储结构、栈的顺序存储结构顺序栈顺序栈顺序栈:顺序栈:开辟一组地址连续的存储单元,依次存放自栈底到栈顶的数据元素。设top指针指示栈顶元素的当前位置。基本操作基本操作栈示意图栈示意图:CBAbasetop新元素入栈顶时:先入栈,再移指针top=top+1删除元素时:先移指针top=top-1,后删栈顶元素 栈的长度
10、:top-base2 2、链栈、链栈定义:定义:采用链式存储结构的栈,并由其栈顶指针惟一确定。设ls为栈顶指针,栈=(a1,a2,an),a1为栈底元素,an为栈顶元素。an a2 a1 ls最迟入栈元最早入栈元2.2.队列队列一、队列描述一、队列描述1 1、队列定义、队列定义2 2、队列特点:、队列特点:先进先出(先进先出(FIFOFIFO)二、队列的顺序存储表示二、队列的顺序存储表示1 1、顺序队列、顺序队列用一组地址连续的存储单元依次存放从队头到队尾的元素。设队头指针为front,队尾指针为rear。约定:当front=rear=0,表示空队列;front指向队头元素;rear指向队尾元
11、素的下一个位置。2 2、循环队列、循环队列假想:假想:将队列的头、尾相连形成一个环,构成循环队列。并引入数学中的模运算计算队头和队尾指针。frontrearMaxsize-10基本操作:基本操作:入队操作:入队操作:Q.baseQ.rear=x;Q.rear=(Q.rear+1)%MAXQSIZE;出队操作:出队操作:x=Q.baseQ.front;Q.front=(Q.front+1)%MAXQSIZE;问题:问题:循环队列的队空、队满条件?循环队列的队空、队满条件?举例说明:举例说明:矛盾:矛盾:对空:对空:front=rear队满:队满:front=rear解决方法:解决方法:少用一个存
12、储空间矛盾三、链队列三、链队列定义:定义:用链表示的队列简称为链队列。设两个指针front、rear分别指示队头和队尾。为了链队列的操作方便,增加一个头结点,front指向头结点,rear指向队尾元素。如图所示:a1 an front队头元素队尾元素rear头结点3.3.递归算法设计递归算法设计一、递归算法设计一、递归算法设计递归过程:递归过程:一个直接调用自己或通过一系列的过程调用语句间接地调用自己的过程称为递归过程。直接递归调用间接递归调用1 1、递归算法的设计思想、递归算法的设计思想分治思想:分治思想:对一个较大问题可分解成属性相同、规模较小的问题,在小问题求解之后,通过组合,求得原来较
13、大问题的解。递归定义:递归定义:基本项:基本项:描述递归过程的终结状态,即可直接求解状态。归纳项:归纳项:描述如何实现从当前状态到终结状态的转化,即子问题与原问题之间的转化。例例1 1:求:求n!n!用分治思想分析,得到递归定义:基本项:基本项:当n=1时,f=1。(直接求解状态)归纳项:归纳项:如果能求得(n-1)!,原问题n!则迎刃而解。(n-1)!与n!问题的属性特征相同,只是规模小了。所以,归纳项是设法求(n-1)!。2 2、递归算法设计、递归算法设计在程序设计中,什么情况下使用递归算法进行程序设计呢?在程序设计中,什么情况下使用递归算法进行程序设计呢?考虑考虑以下三个方面的因素:以下
14、三个方面的因素:当问题的定义是递归的解决问题的数据结构是递归的解决问题的过程是递归的(本章结束)更多优质自考资料尽在百度贴吧自考乐园俱乐部(http:/ 1、串定义、串定义:有零个或:有零个或n n个字符构成的有限序列。个字符构成的有限序列。记为S=a1a2an(n=0);其中S是串名,a1a2.an是串值,ai(i=1)可以是字母、字符、数字,n是串长度,当n=0时为空串。22串的存储结构串的存储结构一、顺序存储结构一、顺序存储结构(或称静态存储结构:编译时进行空间分配)定义:定义:用一组地址连续地址连续的存储单元存储串的字符序列。两种编址形式:两种编址形式:字节编址:字节编址:一个字节字节
15、存一个字符。(如早期的pc机)字编址:字编址:一个字字存一个字符。非紧缩格式:非紧缩格式:每个字存放一个字符。紧缩格式:紧缩格式:每个字节存放一个字符。C C语言仅有紧缩格式:语言仅有紧缩格式:char strmax;char strmax;概念:存储密度概念:存储密度 存储密度存储密度=串值所占的存储位实际分配的存储位顺序存储结构的特点顺序存储结构的特点预先分配串最大长度,有可能造成存储密度低。使串的某些操作受到很大限制。如置换、联接等操作。二、动态存储结构二、动态存储结构(在运行时进行存储空间的分配)定义:定义:用一组任意的存储单元(可以连续,可以不连续)存放串的字符序列。1 1、链式存储
16、结构、链式存储结构每个结点存放一个字符。图示:图示:存储密度=1/(1+4)=20%(设指针占用4字节)特点:特点:密度低,存储空间利用率低,操作简单。每个结点存放多个字符块链结构。图示:图示:存储密度=4/(4+4)=50%(设指针占用4字节)特点:特点:存储密度大,节省空间,操作复杂。链式结构的特点:结点的选择非常重要。a b c rear a b c d e f g h i#33串的模式匹配算法串的模式匹配算法模式匹配:模式匹配:子串的定位操作通常称为串的模式匹配,是各种串处理系统中重要的操作之一。Index(S,T,pos)其中S为主串,T被称为模式串。模式串。若T为S子串,则返回T在
17、S中第pos个字符后首次出现的位置。若T不为S子串,则返回0。模式匹配模式匹配:子串在主串中的定位操作(mT0时说明匹配成功。匹配成功的返回值:T中第一个字符在S中的位置。(本章结束)第五章数组和广义表第五章数组和广义表1.1.数组定义数组定义一、数组定义(一、数组定义(n n维数组)维数组)当n=1时,称为一维数组。当n2时,称为多维数组。一个n维数组是由若干个n-1维数组构成的。更多优质自考资料尽在百度贴吧自考乐园俱乐部(http:/ a12 a1na21 a22 a2n.am1 am2 amn可以看成由若干个一维数组组成,这些一维数组或按行或按列向量构成可以看成由若干个一维数组组成,这些
18、一维数组或按行或按列向量构成Am*n=按列向量:按列向量:a11 a12 a1na21 a22 a2n.am1 am2 amnAm*n=n n个一维数组个一维数组按行向量:按行向量:a11 a12 a1n a21 a22 a2n .am1 am2 amnAm*n=(a11 a12a1n),(a21 a22a2n),(am1 am2 amn)Am*n=m m个一维数组个一维数组2.2.数组的顺序存储表示数组的顺序存储表示问题:问题:存储单元是一维的结构,而数组是多维结构,如何用一组连续存储空间存放数组的数据元素呢?解决方法:解决方法:存储映射策略;行优先存储;列优先存储。数组元素满足1=i=m,
19、1=j=n设每个数据元素占L个存储单元,第一个元素a00存储地址是Loc(a00),问aij在空间上的存储地址是什么?1 1、行优先存储、行优先存储Loc(aij)=Loc(a00)+(i*n+j)*La00a01a0n-1am-10am-1n-1nL假设:行、列的下界为假设:行、列的下界为0Loc(a00)2 2、列优先存储、列优先存储Loc(aij)=Loc(a00)+(j*m+i)*La00a10am-10a0n-1am-1n-1mL假设:行、列的下界为假设:行、列的下界为0Loc(a00)3.3.矩阵的存储及运算矩阵的存储及运算一、一般矩阵的存储一、一般矩阵的存储通常用二维数组存储矩阵
20、。特点:特点:矩阵中的每个元素占用二维数组中的相应位置。二、特殊矩阵的存储二、特殊矩阵的存储特殊矩阵:特殊矩阵:矩阵中相当一部分元素取值相同或都为0或元素在矩阵中分布有一定规律。特殊矩阵的存储方式:通常采用压缩存储。压缩存储:压缩存储:为多个值相同的矩阵元只分配一个存储空间;对0元不分配空间。更多优质自考资料尽在百度贴吧自考乐园俱乐部(http:/ 1、对称矩阵、对称矩阵定义:定义:对于一个n*n方阵,且aij=aji(1=i=n,1=j=j1/2j(j-1)+(i-1)i=j1/2n(n+1)i0时,1,2,n是满足线性有序关系的,且i可以是某一数据对象元素,也可以是一个表结构。前者称为原子
21、原子,后者称为子表子表。(在表示习惯上,广义表名称用大写字母表示,原子用小写字母表示)特点:特点:广义表的结构是递归的。举例:举例:广义表广义表表长表长LS1=()n=0(空表)LS2=(a)n=1(只有原子)LS3=(a,(b)n=2LS4=(a,b)n=2LS5=(a,(b,(c)n=2F=(a,F)n=2(递归表)广义表的术语:广义表的术语:当广义表非空时:(1)广义表的表头表头:表中第一个元素;(2)广义表的表尾表尾:除了表头之外,表中其余元素构成的子表。特点:特点:表头可以是原子或子表,而表尾一定是子表。举例:举例:LS=(a,b),c)Head:(a,b)Tail:(c)LS=(a
22、)Head:aTail:()空表LS=(),(e),(a,(b,c,d)Head:()Tail:(e),(a,(b,c,d)广义表运算:设广义表LS=(1,2,n)取广义表表头Head(LS)=1取广义表表尾Tail(LS)=(2,n)二、求广义表深度二、求广义表深度1 1、广义表深度定义:、广义表深度定义:广义表括号重数例:LS=()深度:1LS=()深度:2LS=(a)深度:1LS=(a,(b,c)深度:2例:求例:求E=(A,B,C)E=(A,B,C)的深度的深度其中:A=(),B=(e),C=(a,(b,c,d)解:Depth(E)=1+maxDepth(A),Depth(B),Dep
23、th(C)Depth(A)=1Depth(B)=1+maxDepth(e)=1Depth(C)=1+max(Depth(a),Depth(b,c,d)Depth(a)=0Depth(b,c,d)=1+maxDepth(b),Depth(C),Depth(d)=1Depth(C)=1+max0,1=2 Depth(E)=1+max1,1,2=3 3(本章结束)第六章树第六章树树的定义和术语树的定义和术语一、树的定义一、树的定义二、树的术语二、树的术语结点度、树的度、结点层次、树的深度、家族树、有序树。更多优质自考资料尽在百度贴吧自考乐园俱乐部(http:/ 1、二叉树定义、二叉树定义树中每个结点
24、至多有两棵子树,且子树有序。(根据二叉树的定义,二叉树的结构是递归的)2 2、二叉树的基本形态、二叉树的基本形态二叉树有五种基本形态:二叉树的基本形态:左子树右子树右子树左子树(1)空二叉树(2)只有一个根结点(3)有根结点和左子树(4)有根结点和右子树(5)有根结点和左,右子树二、二叉树的性质二、二叉树的性质1 1、二叉树、二叉树性质性质1 1:第i层上最多有2i-1个结点。性质性质2 2:深度为K的二叉树最多有2K-1个结点。性质性质3 3:设叶子(度为0)数为n0,度为2的结点数为n2,则n0=n2+1。2 2、满二叉树与完全二叉树、满二叉树与完全二叉树满二叉树:深度为k,且有2k-1个
25、结点。(对满二叉树中的结点约定编号:自根起,从上到下,从左到右)完全二叉树:仅允许最下层右侧分支不满,若按从上到下,从左到右为树中结点编号,则与满二叉树相同。关系:关系:满二叉树是完全二叉树。完全二叉树不一定是满二叉树。3 3、完全二叉树性质、完全二叉树性质性质性质4 4:n个结点,深度为K的完全二叉树,其K=log2n+1性质性质5 5:对一棵n个结点深度为K的完全二叉树上的结点按层次编码(从第一层到第K层,从左到右),则树中编号为i的结点(1=i1时,i的双亲是 i/2;c:当2in时,i是叶点(无左孩子);当2in时,i结点无右孩子;当2i+1=n时,2i+1是i的右孩子。三、二叉树存储
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自考 数据结构 串讲 笔记 复习 进程
限制150内