数据结构与算法 复习与习题解析.pdf
《数据结构与算法 复习与习题解析.pdf》由会员分享,可在线阅读,更多相关《数据结构与算法 复习与习题解析.pdf(107页珍藏版)》请在咨信网上搜索。
1、数据结构与算法复习与习题解析第一讲数据结构与算法概述 了解数据结构有关概念的含义,特别是数据的 逻辑结构和存储结构之间的关系;(重点)熟悉类c语言的书写规范;了解计算算法时间复杂度的方法。(难点)2数据结构的定义按某种逻辑关系组织起来的一批数据(或称 带结构的数据元素的集合)应用计算机语言 并按一定的存储表示方式把它们存储在计算 机的存储器中,并在其上定义了一个运算的 集合。基本概念和术语【数据结构】相互之间存在一种或多种特定关系的数据 元素的集合【数据】是对信息的一种符号表示。是可以输入计算机中,能被计算机识别处理和输出的一切符号集合。【数据元素】是数据的基本单位,在计算机中通常作为一个 整
2、体进行考虑和处理。也称为记录。【数据项】一个数据元素可由若干个数据项组成。是数据不 可分割的最小单位。【数据对象】是性质相同的数据元素的集合。是数据的一个 子集。424/03/201 计算机如何解决问题问题 数学模型 实现机外表示建模逻辑结构求精存储结构处理要求基本运算-1编程实现研究数据结构是为了帮计算机解决问题!524/03/2016数据结构的研究内容【数据结构的三个方面研究内容】具体来说,数据结构包 含三个方面的内容,即数据的逻辑结构,数据的存储结构 和对数据所施加的运算(操作)。线性结构数据的逻辑结构 厂(面向人类)非线性结构 数据的存储结构(面向计算机)顺序存储 链式存储 索引存储
3、散列存储 线性表 栈 队列、串及数组树形结构、图形结构数据的运算(操作):检索、排序、插入、删除、修改等624/03/201四种基本逻辑结构【集合】数据元素间 除了 同属于一个集合外,无其他关系。【线性结构】1对1的 关系比如线性表.栈、队列。【树形结构】1对多的 关系比如树。【图形结构】多对多的关系比如图。24/03/20数据结构与算法算法与数据结构关系密切选择的数据结构是否恰当直接影响算法的效率;而数据结构的优劣由算法的执行来体现。“算法+数据结构二程序”算法!=程序 算法是供人阅读的,程序是让机器执行的 算法用计算机语言实现时就是程序 程序不具有算法的有穷性算法的概念算法是解决某个特定问
4、题的求解步骤的描述。算法在计算机中表现为指令的有限序列,每条指令表示一 个或多个操作。计算机对数据的操作可以分为数值性和非数值性两种类型 O在数值性操作中主要进行的是算术运算;而在非数值性 操作中主要进行的是检索、排序、插入、删除等等。:程序不等于算法:计算机程序是算法的具体实现。924/03/201算法的性质 1 有穷性:一个算法必须在执行有穷步之后结束。(2)确定性:算法中的每一步,必须有确切的含义,在他 人理解时不会产生二义性。(3)可行性:算法中描述的每一步操作都可以通过已有的 基本操作执行有限次实现。(4)输入:一个算法应该有零个或多个输入。(5)输出:一个算法应该有一个或多个输出。
5、这里所说的 输出是指与输入有某种特定关系的量。算法设计的要求:正确性(四个境界)没有语法错误 对于合法的输入数据能够产生满足要求的输出 对于非法的输入数据能够得出满足规格说明的结果 对于任何测试数据都有满足要求的输出结果。可读性:便于阅读、理解和交流:健壮性:不合法数据也能合理处理时间效率高和存储量低1124/03/201算法效率的度量方法事后统计方法通过设计好的测试程序和数据,利用计算机测量其运行时间。缺陷:需要先编写程序;和计算机软硬件相关;和测试数据相关。事前分析估算方法(我们的选择)依据统计方法对算法进行估算。m=f(n),m是语句总的执行次数,n是输入的规模。和问题输入规模相关,独立
6、于程序设计语言和计算机软硬件1224/03/2016算法时间复杂度(重点)在进行算法分析时,语句的总执行次数T(ri)是关于问题 规模n的函数,进而分析T(n)随n的变化情况并确定 T(n)的数量级。口算法的时间复杂度,也就是算法的时间量度,用“大0记法”记作:T(n)=O(f(n)o由此得到的T(n)的数量级叫“大。阶”。它表示随问题规模n的增大,算法执行时间增长 率和f(n)的增长率相同,称作算法的渐进时间复杂度,简 称时间复杂度。其中f(n)是问题规模n的某个函数。口一般情况下,T(n)增长越慢,算法越优。大0阶的数学定义当n-8时,有f(n)/g(n)=常数,0,则称函数f(n)与g(
7、n)同阶,或者说,(n)与g(n)同一个数量级,记作f(n)=0(g(n)称上式为算法的时间复杂度,或称该算法的时间复杂 度为0(g(n)。其中,n为问题的规模(大小)的量度。若lim(f(n)/g(n)=lim(2n3+3n2+2n+l)/n3)=2 n oo n 8则算法的时间复杂度为0(2)算法空间复杂度算法的空间复杂度通过计算算法所需的存储空间实现,算法空间复杂度的计算公式记作:S(n)=0(f(n),其中,n为问题的规模,f(ri)为语句关于n所占存 储空间的函数。我们主要讨论时间复杂度问题。1524/03/2016例题解析【例1】数据元素之间的关系在计算机中有几种表示方法?各有 什
8、么特点?答:四种表示方法(工)顺序存储方式。数据元素顺序存放,每个存储结点只含一个元素。存储位置反映 数据元素间的逻辑关系。存储密度大,但有些操作(如插入、删除)效率较差。(2)链式存储方式。每个存储结点除包含数据元素信息外还包含一组(至少一个)指 针。指针反映数据元素间的逻辑关系。这种方式不要求存储空间连续,便于动态操 作(如插入、删除等),但存储空间开销大(用于指针),另外不能折半查找等。(3)索引存储方式。除数据元素存储在一地址连续的内存空间外,尚需建立一个索引 表,索引表中索引指示存储结点的存储位置(下标)或存储区间端点(下标),兼 有静态和动态特性。(4)散列存储方式。通过散列函数和
9、解决冲突的方法,将关键字散列在连续的有限的 地址空间内,并将散列函数的值解释成关键字所在元素的存储地址,这种存储方式 称为散列存储。其特点是存取速度快,只能按关键字随机存取,不能顺序存取,也 不能折半存取。1624/03/2016例题解析【例2】有下列运行时间函数:(1)Tjn)=1000;(2)T2(n)=n2+1000n;(3)T3(n)=3n3+100n2+n+l;分别写出相应的大。表示的运算时间答:(1)0(1)(2)O(n2)(3)O(n3)1724/03/2016例题解析【例3】已知如下程序段for(i=n;i0;i-)语句 1x=x+l;语句 2)for(j=n;j=i;j-)j
10、 语句 3 y=y+i;j 语句 41语句1执行的频度为语句2执行的频度为语句3执行的频度为语句4执行的频度为里 1=1(1)n+1(2)n(3)n(n+l)/2+1(4)n(n+l)/2【例3】已知如下程序段int i=l;/的频度是工while(i=n)i=i*3;/求该程序的时间复杂度是多少?解:设语句的频度是f(n),贝 J:3人f(n)=n;f(n)2424/03/2016例题解析。构造有1-12元素的二分查找的判定树,并求解下列问题:(1)各元素的查找长度最大是多少?(2)查找长度为1、2、3、4的元素各有多少?具体是哪些元素?(3)查找第5个元素依次要比较哪些元素?【答】12个元
11、素的判断树如下图所示:(1)最大查找长度是树的深度4。(2 查找长度为1的元素有1个,为 第6个,查找长度为2的元素有2个,为第3个和第9个,查找长度为3的元 素有4个,为第1、4、7、11个,查找 长度为4的元素有5个,为第2、5、8、10、12 个。3 查找第五个元素依次比较6,3,4,5o 2524/03/2016例题解析例:设有一组关键字32,75,63,48,94,25,36,18,70,采用哈希函数:H(key)=key MOD H并采用步长为1的线性探测法解决冲突,试在010的 散列地址空间中对该关键字序列构造哈希表。0123456789 10702548369418637532
12、【答】依题意,m=ll,线性探测再散列的下一地址计算公式为:di=H(key),dj+i=(dj+1)MOD 11;j=l,2,其计算过程如下:H(32)=32 MOD 11=10 H(75)=75 MOD 11=9H(63)=63 MOD 11=8 H(48)=48 MOD 11=4H(94)=94 MOD 11=6 H(25)=25 MOD 11=3H(36)=36 MOD 11=3(冲突)H(36)=(3+l)MOD 11=4(仍冲突)H(36)=(4+l)MOD 11=5 H(18)=18 MOD 11=7H(70)=70 MOD 11=4(冲突)H(70)=(4+l)MOD 11=5
13、(仍冲突)H(70)=(10+l)MOD 11=0排序.:.简单排序方法(0 n2 插入排序(稳定排序)选择排序(不稳定排序)冒泡排序(不稳定排序):先进排序方法(O nlogn 快速排序(不稳定排序)归并排序(稳定排序)堆排序(不稳定排序)各种排序方法的综合比较 一、时间性能1.按平均时间性能来分,有三类排序方法:时间复杂度为o(mog):快速排序、堆排序和归并排序,其中以 快速排序为最好。时间复杂度为。(层):直接插入排序、起泡排序和简单选择排序,其中以直接插入为最好,特别是对那些对关 键字基本有序的记录序列尤为如此。时间复杂度为。(*砂:基数排序。2.当待排序列按关键字顺序有序时,直接插
14、入排序和起泡排序能 达到。()的时间复杂度,快速排序的时间性能蜕化为。(2。3.简单选择排序、堆排序和归并排序的时间性能不随记录序列中 关键字的分布而改变-各种排序方法的综合比较 二、空间性能指的是排序过程中所需的辅助空间大小。1.所有的简单排序方法(包括:直接插入、冒泡和简单选择)和 堆排序的空间复杂度为0(1);2.快速排序为O(log),为递归程序执行过程中,栈所需的辅助 空间;3.归并排序所需辅助空间最多,其空间复杂度为。();4.链式基数排序需附设队列首尾指针,则空间复杂度为0(2*4+)三、排序方法的稳定性能1.当对多关键字的记录序列进行LSD方法排序时,必须采用稳 定的排序方法。
15、2.对于不稳定的排序方法,只要能举出一个实例说明即可。3.快速排序、堆排序是不稳定的排序方法。各种内部排序方法的比较排序方法平均时间最坏情况最好情况辅助存储稳定性插入排序0(n2)0(M)0(n)0(1)稳定选择排序0(n2)0(M)0(n2)0(1)稳定冒泡排序0(n2)0(M)0(n)0(1)稳定快速排序O(nlgn)0(M)O(nlgn)O(lgn)不稳定归并排序O(nlgn)O(nlgn)O(nlgn)0(n)稳定堆排序O(nlgn)O(nlgn)O(nlgn)0(1)不稳定基数排序0(d Xn)0(d Xn)0(d Xn)0(n)稳定例题解析:设待排序的排序码序列为12,2,16,3
16、0,28,10,16*,20,6,18,试分别写出使用以下排序方法每趟排序后的结果。并说明 做了多少次排序码比较。(1)直接插入排序;(2)起泡排序;【答】(1 直接插入排序初始排列012345 6789排序码比较次数i=112216302810 16、206181i=22、1216302810 16、206181i=321216 302810 16、206181i=42121630|2810 206182i=52121628、3010 206185i=6210、12、28、30206183i=72101216206183i=8210121620、3。6183i=926、12、16、20、12
17、81882610121618、L20、28、3。3124/03/2016例题解析:设待排序的排序码序列为12,2,16,30,28,10,16*,20,6,18,试分别写出使用以下排序方法每趟排序后的结果。并说明 做了多少次排序码比较。(1)直接插入排序;(2)起泡排序;【答】(2)起泡排序初始排优10 12345 6789 排序码比较次数i=012 2 16 30 28 10 20 6 18 9i=12 12 6 16 30 28 10 20 18 8i=22 6 12 10 16 30 28 18 20 7 A A 3224/03/2016例题解析【例】填空题:1.空格串是指,其长度等于【
18、套案】(1)由空格字符(人$0工工值32)所组成的字符串。(2)空格个数2.组成串的数据元素只能是 o【答案】字符【解析】串是一种特殊的线性表,其特殊性在于串中的元素只能 是字符型数据。3.两个字符串后等的充分必要条件是 o【答案】两串的长度相等且两串中对彘叠育字面赢等。4.一个字符串中 称为该串的子串。【答案】任意个造丽字湎赢字序列例题解析【例】设计一个算法,将字符串S的全部字符复制 到字符串t中,不能利用Strcpy函数。答:【算法分析】要实现两个字符串的复制,实质为两个字符数 组之间的复制,在复制时,一个字符一个字符的复制,直到遇 到,0L,0,一同复制过去,之后的字符不复制。【算法源代
19、码】void copy(char s z char t)(int i;for(i=0;si!=,0,;i+)t i=si;ti=si;)链表链式存储结构特点用一组任意的存储单元存储线性表的数据元素利用指针实现了用不相邻的存储单元存放逻辑上相邻的元素每个数据元素ai,除存储本身信息外,还需存储其直接后继的信息 链式存储结构的优点:结点空间可以动态申请和释放;数据元素的逻辑次序靠结点的指针来指示,插入和删除时不需要移 动数据元素。链式存储结构的缺点:每个结点的指针域需额外占用存储空间。当数据域所占字节不多时,指针域所占存储空间的比重显得很大。链表是非随机存取结构。对任一结点的操作都要从头指针依链查
20、找该结点,这增加了算法的复杂度O(n)不便于在表尾插入元素:需遍历整个表才能找到位置。35 24/03/2016例题解析【例1】说明在线性表的链式存储结构中,头指针与头 结点之间的根本区别。答:,在线性表的链式存储结构中,头指针指链表的指针,若链 表有头结点则是链表的头结点的指针,头指针具有标识作 用,故常用头指针冠以链表的名字。,头结点是为了操作的统一、方便而设立的,放在第一元素 结点之前,其数据域一般无意义(当然有些情况下也可存 放链表的长度、用做监视哨等等),有头结点后,对在第 一元素结点前插入结点和删除第一结点,其操作与对其它 结点的操作统一了。而且无论链表是否为空,头指针均不 为空。
21、3624/03/2016例题解析【例2】设顺序表va中的数据元素递增有序。试设计一个算法,将x插入到顺序表的适当位置上,以保持该表的有序性。答:void Insert_SqList(SqList va,int x)/*把x插 入递增有序表G中*/int i;if(va.length MAXSIZE)return;for(i=va.length-1;va.elemix&i=0;i-)va.elem i+1=va.elem i;vaelemi+1=x;valength+;/*Insert_SqList*/1.#define MAXSIZE 1002.typedef struct(3.ElemTyp
22、e*elem;4.int length;5.)SqList;3724/03/2016例题解析【例3】设单链表结点指针域为next,试写出删除链 表中指针p所指结点的直接后继的C语言语句。答:q=p-next;p-next=q-next;free(q);3824/03/2016例题解析【例4】设单链表中某指针p所指结点(即p结点)的数据域为data,链指针域为next,请写出在p 结点之前插入s结点的操作。答:设单链表的头结点的头指针为head,且pre=head;while(pre-next!=p)pre=pre-next;s-next=p;pre-next=s;3924/03/2016例题解
23、析【例5】试编写在带头结点的单链表中删除(一个)最小值结点的算法。void delete(Linklist&L)分析单链表中删除最小值结点,为使结点删除后不出现“断链”,应知 道被删结点的前驱。而“最小值结点”是在遍历整个链表后才能知道。故 应首先遍历链表,求得最小值结点及其前驱。遍历结束后再执行删除操作void delete(LinkedList&L)L是带头结点的单链表p=L-next;p为工作:三针。指向待处理的结点。pre=L;pre指向最小值结点的前驱。q=P;q指向最小值结点,初始假定第一结点是最小值结点。while(p-next!=null)if(p-next-datadata)
24、pre=p;q=p-next;查最小值结点p=p-next;指针后移。pre-next=q-next;/从链表上删除最小值结点40 free(q);释放最小值结点空间 24/03/2016I/Zr4-vfcrJI _ i _例题解析【例6】一元稀疏多项式以循环单链表按降塞排列,结点有三个域,系数域 coef,指数域exp和指针域next;现对链表求一阶导数,链表的 头指针为ha,头结点的exp域为-1。void derivative(ha)q=ha;pa=ha-next;while(1)if(2)(3);free(pa);pa=(4);else pa-coef(5);pa=(8);)(1)pa
25、!=ha(2)pa-exp=0(3)q-next=pa-next(4)q-next(5)=pa-coef*pa-exp(6)(7)pa(8)pa-next41pa-exp(6);q=(7)_);/或 pa-exp!=l若指数为0,即本项为常数项删常数项取下一元素指数项减工前驱后移,或q-取下一元素24/03/2016例题解析【例7】(1)在一个长度为n的顺序表的第i(linext=rear-next;rear-next=s;rear=s;删除开始结点的操作顺序为Q=rear-next-next;rear-next-next=Q-next;delete q;o第三讲栈和队列(栈和队列及其应用):
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构与算法 复习与习题解析 数据结构 算法 复习 习题 解析
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。