ImageVerifierCode 换一换
格式:DOC , 页数:14 ,大小:244.50KB ,
资源ID:8111900      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8111900.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(算法与数据结构复习.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

算法与数据结构复习.doc

1、算法与数据结构复习题 一、 单选题 1.要求具有同一逻辑结构的数据元素具有相同的特性,其含义为(B.)。 A. 数据元素具有同一的特点 B. 不仅数据元素包含的数据项的个数相同,而且其对应数据项的类型要一致 C. 每个数据元素都一样 D. 仅需要数据元素包含的数据项的个数相同 2.下列程序段 for(i=1;i<=n;i++) A[I,j]=0; 的时间复杂度是(D)。 A. O(1) B. O(0) C. O(1+n) D. O(n) 3.在一个单链表中,已知*q结点是*p结点的前驱结点,若在*q 和*p之间插入结点*s,则执行操作(C )。 A

2、 s->next=p->next;p->next=s; B. s->next=p;p->next=s C. q->next=s;s->next=p; D. p->next=s;s->next=q; 4.在一个单链表中,若删除*p结点的后继结点,则执行操作( A )。 A. q=p->next;p->next=q->next;free(q); B. p=p->next;p->next=p->next->next;free(p); C. p->next=q->next;free(p->next); D. p=p->next->next;fre

3、e(p->next); 5.设指针p指向双链表的某一结点,则双链表结构的对称性可以用下面的操作来反映(C)。 A. p->prior->next=p->next->next; B. p->prior->prior=p->next->prior; C. p->prior->next=p-> next->prior; D. p->next->next= p->prior->prior; 6.表达式a*(b+c)--d的后缀表达式是( B )。 A.abcd*+- B.abc+*d- C.abc*+d- D.-+*abcd 7.

4、设一个栈的输入序列为A,B,C,D,则借助一个栈所得到的输出序列不可能是( D )。 A.A,B,C,D B.D,C,B,A C. A,C,D,B D. D,A,B,C 8.设一个栈的输入序列为12345,则借助一个栈所得到的输出序列不可能是(B )。 A.23415 B.54132 C. 23145 D. 15432 9.设有一个顺序栈,6个元素1、2 、3、4、5、6依次入栈,如果6个元素出栈的顺序是2、3、4、6、5、1,则栈的容量至少应该是( B )。 A.2

5、 B.3 C. 5 D. 6 10.设有一个顺序栈的入栈序列是a、b、c,则3个元素都出栈的可能不同排列个数为(B )。 A.4 B.5 C. 6 D. 7 11.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为pl,p2,p3,…,pn,若pl是n,则 pi是( C )。 A.i B.n-i C.n-i+1 D.不确定 12.已知广义表LS=((a,b,c),(d,e,f)),运算head和tail函数取出元素e的运算是( C )。 A.head(tai

6、l(LS)) B.tail(head(LS)) C.head(tail(head(tail(LS)))) D.head(tail(tail(head(LS)))) 13. 二维数组A的每个元素是由6个字符组成的串,其行下标i=0,l,…,8,列下标为j=1,2.….10。设每个字符占一个字节,若按行先存储,元素A[8,5]的起始地址与A按列存储时起始地址相同的元素是( B )。 A.A[8,5] B.A[3,10] C.A[5,8] D.A[0,9] 14.数组A[1..5,1..6]的每个元素占5个单元,将

7、其按行优先次序存储在起始地址为1000的连续的内存单元中,则元素A[5,5]的地址为(A ) A.1140 B.1145 C.1120 D.1125 15.对二叉树从1开始进行连续编号,要求每个结点的编号大于其左右孩子的编号,同一个结点的左右孩子中,其左孩子的编号小于其右孩子的编号,则可采用遍历方式是( C )。 A.先序 B.中序 C.后序 D.从根开始的层次遍历 16.某二叉树的先序序列和后序序列正好相反,则该二叉树的特点一定是( B )。 A. 空或只有一个结点 B.高度等于其结点数 C. 任一结点无左孩子

8、D.任一结点无右孩子 17.下列说法正确的是( D )。 (1)二又树按某种方式线索化后,任一节点均有指向前趋和后继的线索 (2)二叉树的前序遍历序列中,任意一个节点均处于在子孙节点前 (3)二叉排序树中任一节点的值大于其左孩子的值,小于右孩子的值 A.(1)(2)(3) B.(1)(2) C.(1)(3) D.前面的可选答案都不对 18.下面的说法中正确的是( B )。 (1)任何一棵二叉树的叶子节点在三种遍历中的相对次序不变。 (2)按二叉树定义,具有三个节点的二叉树共有6种。 A.(1),(2) B.(1)

9、 C.(2) D.(1),(2)都错 19.树有先根遍历和后根遍历,树可以转化为对应的二叉树。下面的说法正确的是(B )。 A.树的后根遍历与其对应的二叉树的后根遍历相同 B.树的后根遍历与其对应的二叉树的中根遍历相同 C.树的先根遍历与其对应的二叉树的中根遍历相同 D.以上都不对 20..下图的邻接表中,从顶点V1 出发采用深度优先搜索法遍历该图,则可能的顶点序列是(D)。 A. V1V2V3V4V5 B. V1V2V3V5V4 C. V1V4V3V5V2 D.V1V3V4V5V2 21.以下说法不正确的是( D

10、 )。 A.无向图中的极大连通子图称为连通分量 B.连通图的广度优先搜索中一般要采用队列来暂存刚访问过的顶点 C.图的深度优先搜索中一般要采用栈来暂存刚访问过的顶点 D.有向图的遍历不可采用广度优先搜索 22.在平衡二叉树中插入一个结点后引起了不平衡,设最低(最接近于叶子)的不平衡点是A,并已知A的左、右孩子的平衡因子分别为-1和0,则应进行的平衡旋转是( B )。 A.LL型 B.LR型 C.RL型 D.RR型 23.设哈希表长为14,哈希函数H(key)=key%11,表中已有数据的关键字为15,38,6

11、1,84,四个,现将关键字为49的结点加到表中,用二次探测再散列法解决冲突,则放入的位置是(A )。 A.8 B.3 C.5 D.9 24.对散列文件,以下说法错误的是(D )。 A.散列文件插入、删除方便,不需要索引区且节省存储空间 B.散列文件只能按关键字随机存取且存取速度快 C.经过多次插入、删除后,可能出现溢出桶满的情况 D.散列文件顺序存取方便 26..对有18个元素的有序表作二分查找,则查找A[3]的比较序列的下标为( D )。 A. 1,2,3 B. 9,5,2,3 C.9,5,3 D. 9

12、4,2,3 27..在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡结点为A,并已知A的左孩子的平衡因子为0,右孩子的平衡因子为1,则应调整以使其平衡,所作的平衡旋转是(C )。 A. LL型 B. LR型 C. RL型 D. RR型 28..在n个结点且为完全二叉树的二叉排序树中查找一个键值,其平均比较次数的数量级为( B )。 A. O(n) B. O(log2n) C. O(nlog2n) D. O(n2) 29.下列排序算法中,在待排序数据已基本有序时,效率最高的排序方法是(A )。 A.插入 B.选择

13、C.快速 D.堆 30.下面关于B-树和B+树的叙述中,不正确的结论是(A )。 A.B-树和B+树都能有效地支持顺序查找 B.B-树和B+树都能有效地支持随机查找 C.B-树和B+树都是平衡的多叉树 D.B-树和B+树都可用于文件索引结构 31.关键路径是事件结点网络中( B )。 A.从源点到汇点的最长路径 B.从源点到汇点的最短路径 C.最长的回路 D.最短的回路 32.将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是(A )。 A.n B.2n-1

14、 C.2n D.n-1 33.下列排序算法中,时间复杂度不受数据初始状态影响,恒为0(nlog2n)的是(A )。 A. 堆排序 B. 冒泡排序 C. 直接选择排序 D. 快速排序 34.下列排序算法中,某一趟结束后未必能选出一个元素放在其最终位置上的是(D ) A. 堆排序 B. 冒泡排序 C. 快速排序 D. 直接插入排序 35.数据表A中有10000个元素,如果仅要求求出其中最大的10个元素,则采用最节省时间的排序算法是( A )。 A. 堆排序 B. 希尔排序 C. 快速排序 D. 直接选择排序

15、二、填空(问答)题 1.数据结构被形式地定义为(D,R),其中D和R 的含义是什么。(D是数据元素的集合,R是数据关系的集合)。数据的逻辑结构包括哪四种类型。(线性结构、树形结构、图形结构、集合类型)。从存储结构的概念上讲,顺序表是线性表的(顺序存储结构 ),链表是(链式存储结构)。 2.算法的五个重要特性有哪些。(有穷性、确定性、可行性、输入、输出)。抽象数据类型是指一个(数学模型)以及定义在该模型上的(一组操作)。 3.在含有n个结点的顺序存储的线性表中,在任意一个结点前插入一个结点所需要移动结点的平均次数为( n/2 )。在含有n个结点的顺序存储的线性表中,任意删除一个结点所需要移

16、动结点的平均次数为( n-1/2 )。对一个线性表分别进行遍历和逆置运算,其最好的时间复杂度量级均为(O(n))。 4.线性结构中的一个结点代表一个(数据元素 )。若线性表中最常用的操作是取第i个元素和查找该元素的前驱,则采用的存储方式最能节省时间的是(顺序表 )。若最常用的操作是插入和删除第i个元素,则采用的存储方式最能节省时间的是(单链表 )。 5.在一个不带头结点的单链表中,在表头插入或删除与在其他位置插入或删除操作过程不同,,需要修改(头指针)。在单链表中设置头结点的作用是(便于操作),无论链表是否为空。使(头指针)均不为空。对于双向链表,在两个结点之间插入一个新结点需修改的指针共

17、有(4个),单链表为(2个)。 6.如果以链栈为存储结构,则出栈操作时( 必须判别栈空 ),与顺序栈相比,链栈有一个明显的优势是( 不易出现栈满 )。 7.循环队列采用数组data[1..n]来存储元素的值,并用front和rear分别作为其头尾指针。为区分队列的满和空,约定:队中能够存放的元素个数最大为n-l,也即至少有一个元素空间不用,则在任意时刻,至少可以知道一个空的元素的下标是(front) ;入队时,可用语句(rear=rear+1%n)求出新元素在数组data中的下标。 8.已知栈的输入序列为1,2,3….,n,输出序列为a1,a2,…,an,a2=n的输出序列共有(n-1)

18、种输出序列。 9.稀疏矩阵一般的压缩存储方法有两种,它们是用(哈希表、三元组和十字链表 )。对矩阵压缩存储是为了(节省空间)。 10.将下三角矩阵A[l..8,1..8]的下三角部分逐行地存储到起始地址为1000的内存单元中,已知每个元素占4个单元,则A[7,5]的地址为 (1100)。 11.已知数组A[1..10,1..10]为对称矩阵,其中每个元素占5个单元。现将其下三角部分按行优先次序存储在起始地址为1000的连续的内存单元中,则元素A[5,6]对应的地址为(1095)。 12.两个串相等的充要条件是,两个串的(长度)相等,且其所对应各个位置的(字符)也相等。 13.取出广义

19、表A=((x,(a,b,c,d)))中原子C的函数是( head(tail(tail((head(tail(head(A)))))) )。 14.在有n个结点的二又链表中,值为非空的链域的个数为(n-1)。在有n个叶子结点的哈夫曼树中,总结点数是(2n-1)。在树形结构中,根结点数只有(1个),其余每个结点有且仅有一个元素(前驱)结点。 15..一棵二叉树L的高度为h,所有结点的度或为0,或为2,则这棵二叉树最少的结点数为( 2h-1 )。 已知二叉树有50个叶子结点,则该二叉树的总结点数至少是(99)。将一棵有100个结点的完全二叉树从根这一层开始,每一层上从左到右依次对结点进行编号,

20、根结点的编号为1,则编号为49的结点的左孩子编号为(98 )。有64个结点的完全二叉树的深度为( 7 )。 16.拓扑排序只能用于(有向无环图)。连通图是指图中任意两个顶点之间(都连通的无向图 )。一个有n个顶点的无向连通图,它所包含的连通分量个数最多为( 1 )个。任何一个无向连通图的最小生成树(有一棵或多棵)。若含有n个顶点的图形成一个环,则它有(n)棵生成树。 17.求图的最小生成树有两种算法,(prim(普里姆))算法适合于求稠密图的最小生成树,(kruskal(克鲁斯卡尔))算法适合于求稀疏图的最小生成树。设图G用邻接表存储,则拓扑排序的时间复杂度为(O(n+e) )。 18.

21、在一棵三叉树中,度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,则度为0的结点数为( 6 )。 19.中序表达式A*(B+C)/(D-E+F)的后序表达式是(ABC+*DE-F+/ )。 20.有向图G用邻接矩阵A存储,则顶点i的入度等于A中(第i列1的元素之和 )。具有10个顶点的无向图,边的总数最多为(45)个,具有n个顶点的强连通有向图G,边的总数至少有(n)条。 21.从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为( 插入排序 )。对于关键字序列(12,13,11,18,60,15,7,

22、18,25,100),用筛选法建堆,则开始结点的键值必须为( 60 )。 22.在有序表A[l..20]中,采用二分查找算法查找元素值等于A[12]的元素,所比较过的元素的下标依次为(10,15,12),查找元素值等于5的元素,所比较过的元素个数为(5)个。分别采用堆排序、快速排序、插入排序和归并排序算法对初始状态为递增序列的表按递增顺序排序,最省时间的是(插入排序)算法,最费时问的是(快速排序)算法。直接选择排序算法所执行的元素交换次数最多为(n-1)次,最好情况下所作的交换元素的次数为(0)次。在堆排序,希尔排序,快速排序,归并排序算法中,占用辅助空间最多的是 (归并排序)。二分查找法

23、要求查找表中各元素的关键字的值得排列必须是(递增或递减或有序 )。 23.若一个待散列存储的线性表长度为n,用于散列的散列表长度为m,则m应(小于等于)n,装填因子公式为(n/m)。散列表的平均查找长度(与处理冲突方法有关而与表的长度有关 )。 24.在平衡二叉树上删除一个结点后可以通过旋转使其平衡,最坏情况下需旋转(O(log2n) )次。 25.贪心算法的基本思想是,逐步构造最优解,每步都按照一定的标准,称为(贪心)准则,做出决策。0/1背包问题的三种贪心准则中,相对较优的是(价值密度)贪心准则。分治法与(递归)技术紧密结合。与分治法不同的是,动态规划是(自底向上或自下而上)、逐级求

24、解子问题。分枝定界的搜索策略与(广度优先)类似,而回溯方法则采用(深度优先)搜索策略。 26.对于单链表、单循环链表和双向链表,若仅仅知道一个指向链表中某结点的指针p,能否将p所指的结点的数据元素与它的直接前趋(假设存在)交换?若不可以,说明理由;若可以,写出主要算法。 (1)单链表不能,单循环链表和双向链表可以。 (2)单循环链表 q=p;while(q->next!=p) q=q->next;temp=p->data; p->data=q->data;q->data=temp; (3)双向链表:q=p->prior; temp=q->data; q->data=p->dat

25、a;p->data=temp; 27.设有三对角矩阵a[1..n,1..n]把非零元素按列存储在向量b[1..3*n-2]中,使得b[k]=a[i,j]。 求:⑴ 用i,j表示k的下标变换公式 (k=2*(j-1)+i) ⑵ 用k表示i,j的下标变换公式 (j=(k DIV 3)+1 i=k-2*(j-1)) 28.内存中一片连续空间(不妨设地址从1到m),提供给两个栈S1和S2使用,怎样分配这部分存储空间,使得对任意一个栈,仅当这部分全满时才发生上溢。(为了尽量利用空间,减少溢出的可能,可采用栈顶相向,栈底分设两端的存储方式,这样,对任何一个栈,仅当整个空间全满时才会发生上溢。)

26、 29.有一n个结点的树,其中所有分支结点的度均为k,求该树中叶子结点的个数。 设no为叶子结点数,nk为度为k的结点数,n为结点总数(依题意:n=no+nk —(1) n= knk+1 (2) 综合(1) 和(2)得: no=n-(n-1)/k 30. 设有n个无序元素,按非递减次序排序,但只想得到前面长度为k的部分序列,其中n>>k,最好采用什么排序方法?为什么?如有这样一个序列:{59,11,26,34,17,91,25},得到的部分序列是{11,17,25},对于该例使用所选择的方法实现时,共执行多少次比较? (1)采用堆排序最合适,因为当部分序列较小时,堆排序的时间复杂

27、度近似为O(n)。 (2)初始建堆: 比较8次 输出11,第一次调整:比较4次 输出17 第二次调整:比较2次 输出 25,总共比较14次。 31. 设二叉排序树中关键字由1至1000的整数组成,现要查找关键字为363的结点,下述关键字序列哪一个不可能是在二叉排序树中查到的序列?说明原因。   ⑴ 51,250,501,390,320,340,382,363; ⑵ 24,877,125,342,501,623,421,363; ((1)是;⑵不是。因为查询序列是:查421时,其623左、右两个区间都不存在,查找失败。) 32. 在执行某个排序算法过程

28、中,出现了排序关键字朝着最终排序序列相反方向的移动,从而认为该算法是不稳定的,这种说法对么?为什么? (不正确。算法的稳定性是考察最终排行的位置交换,与中间过程无关。如:对于整数序列(18,36,25)。按基数排序的LSD方法,第一趟排序后(25,36,18),第二趟排序后得到(18,25,36),18虽向相反方向移动,但不影响最终位置。) 33. 将算术表达式((a+b)+c*(d+e)+f)*(g+h)转化为二叉树( 二叉链表结构)(略) 三、应用题 1.有一个二叉树按层次顺序存放在一维数组中,如下图所示: 试求:(1)该树的后序遍历序列。(C,E,B,D,A) (2

29、画出该树的后序线索树。(略) 1 2 3 4 5 6 7 8 9 10 11 A C B E D 2.按顺序输入下列顶点对: (1,2)、(1,6)、(2,6)、(1,4)、(6,4)、(1,3)、(3,4)、(6,5)、(4,5)、(1,5)、(3,5), (1)画出相应的邻接表。 (2)写出在邻接表上,从顶点3开始(表下标从0开始)的DFS序列和DFS生成树。 (1)邻接表1 ∧ 5 3 2 4 V1 V2 V3

30、 V4 V5 V6 1 2 3 4 5 0 1 2 3 4 5 0 ∧ 5 0 ∧ 3 4 0 ∧ 5 2 4 5 ∧ 3 0 2 0 ∧ 1 3 4 (2)DFS序列 2-0-1-5-3-4 3.设一哈希表长为13,采用线性探测法解决冲突,哈希函数H(key)=key%13, (1)画出在空表中依次插入

31、关键字25,20,36,15,41,52,29,72,67后的哈希表。 (2)求在等概率情况下,查找成功和查找不成功的平均查找长度。 (1) 100 101 102 103 104 105 106 107 108 109 110 111 112 52 15 41 29 67 20 72 36 25 (2)平均查找长度     查找成功的平均查找长度=(5*1+3*2+1*4)/9=1.6     查找不成功的平均查找长度=(2+1+5+4+3+2+1+3+2+1+2+1+3)/13=30/13 4.对下面的

32、关键字集(30,15,21,40,25,26,36,37),若查找表的装填因子为0.8,采用线性探测再散列解决冲突:(1)设计哈希函数;(2)画出哈希表; (1)表长: m=n/α=8/0.8 =10 哈希函数: H(key)=key%7 (2) 哈希表 0 1 2 3 4 5 6 7 8 9 21 15 30 36 25 40 26 37 5.写出对关键字序列{503,087,512,061,908,124,897,275,653,426}建立一棵平衡二

33、叉排序树的过程,并写出调整平衡时的旋转类型。 503 503 087 512 RL 087 897 061 124 908 061 124 512 908 897

34、 503 503 087 897 RR 087 897 061 124 512

35、 908 061 275 512 908 275 653 124 426 653 426 四、算法分析与设计题 1.设有一个由正整数组成的无序单链表,阅读下面的算法,指出该算法的功能,并在“//”后面加上必要的注释。 void F1(Linklist &L){ p=L→next; pre=p; //p

36、re为最小结点指针 while(p){ if(p→data

37、放在空间区D内,每个数据占一个存储单元。数据组的首地址由数组S给出,阅读下面的算法,指出该算法的功能,并在“//”后面加上必要的注释。 void F1(sqlist &L,int i, ElemType x){ if(i>=1&&i<=L.length){ //(1)插入到D区 for(j=0,p=L.elem[0];j<=m;j++) p++; //(2)求D区空闲空间首地址 if(i==L.length) *p=x;//(3)插入到第n个数组 else { for(q=L.elem[i];p>=q;--p) *(p+1)=*p; *p=x; //插入x for(q=

38、L.elem[i],p=&L.elem[L.length-1]; p>=q;q++) (*q)++;//else m++; }//if }//F1 算法功能:将数据x插入到D区,插入后D和S关系不变。 3.设有一个正整数序列组成的非递减有序单链表,阅读下面的算法,指出该算法的功能,并在“// 后面加上必要的注释。 void F1 (Linklist L;int,x){ p= L→next; q=p; //p为工作指针 pre=L; L→next=NULL; .//q指最小元素 while(P&&P→data

39、p→next=L→next; L→next=p; p=r; //(2)置逆 }//while q→next=p; pre=q; //(3)重新链接 }//F1 算法功能:在单链表中将比正整数x小的数按递减次序排列。 4.假设一个仅包含二元运算符的算术表达式以二叉链表形式存储在二叉树 T 中,阅读下面的算法,指出该算法的功能,并在“//”后面加上必要的注释。 int F1(BiTrec T){ if(!T) return 0; if(!T→lchild &&!T→rchild)//(1)判断是否为叶子结点 return (T→data); Lv= F1(T→l

40、child);Rv= F1(T→rchild); switch(T→data){//(2)运算 case ’+’ : V=Lv+Rv; break; case’-’ : V=Lv-Rv; break; case’*’: V=Lv*Rv; break; case’/’: V=lv/Rv; break; } //switch return V;//(3)返回结果 }//F1 算法功能:后序遍历二叉树,求算术表达式的值。 5.在有向图G中,如果r到G的每个结点都

41、有路径可达,则称结点r为G的根结点,下面算法的功能是判断有向图G是否有根,若有,则打印出所有根结点的值。请填空补全算法,并在“//”后面给以注释。 void F2(ALGraph G){ //利用深度优先搜索,判断有向图G是否有根结点。 int visited[maxsige],count; //count为记录结构的顶点数。 for(v=0;v

42、否为根 printf(G.ver[v].data); } }// F2 void DFS(ALGraph G,int v){ //从第v个顶点出发递归地深度优先遍历图G visited[v]=1; count++; for(p=G.vertices[v].firstarc; p; p=p→nextarc){ w=p→adjvex; if(!visited[w]) (3)_;// 深度优先搜索 } }//DFS (1)visited[v]=0;(2)G.vexnum (3)DFS(G,w) ; 6.下面算法的功能是实现单链表中的简单

43、选择排序,其中L为链表的头结点指针,请填空补全算法,并在“//”后面给以注释。 void F2(LinkList &L){//用单链表实现简单选择排序 p=L->next; //初始化,p为工作指针 while(p){ min=p; (1)___________;// q为插入指针,min为当前最小指针 while((2)___________){ //一趟选择排序 if(q->datadata) min=p; q=q->next; }//while(q) if( (3)____

44、){// 交换 temp=p->data; p->data=min->data;min->data=temp; }//if p=p->next; }//while(p) }//F2 (1)q=p->next; (2)q 或q !=null (3)min 7.设计算法DeleteX的功能是:删除单链表L中值为x的结点的直接前趋结点。(设L是带头结点的单链表的头指针,并为已知的LinkList类型) void DeleteX(LinkList &L){ //删除单链表中的直接前驱结点 p=L->next; //初始化,p为工作指针

45、 while(p&& p->next->data!=x){//q为前驱结点指针 q=p;p=p->next; }// while if(p){ //删除 q->next=p->next; free(p); }//if }// DeleteX 8.Internet的域名系统是一个典型的层次结构,可用树形结构表示。每一个域名服务器提供的区域信息恰好是以该结点为根的子树中的全部的IP地址。设计算法以孩子-兄弟链表作为树的存储结构,实现搜索所有www域名的IP地址。 void Outpat

46、h(CSTree T,Stack &S){//搜索IP地址 while(T){ Push(S,T->data) if(!T->firstchild && T->data==”www”) visitstack(S);//输出一条路径 else Outpath(T->firstchild ,&S)//递归遍历左子树 Pop(S,e); T=T->nextsibiling; // 遍历右子树 }//while }//Outpath 9.设计算法实现以逆邻接表

47、为存储结构的有向图的拓扑排序(要求给出逆邻接表的存储结构定义)。 (1)存储结构定义 vexdata firstin 顶点结构 adjvex info firstarc 表结点结构 (2) 算法设计 int toposort (ALGraph G,int tpv[]){ //以逆邻接表为存储结构的有向图的拓扑排序 top=0; for(i=0;i

48、egree); // 对各顶点求出度 outdegree[p→adjvex]++; InitStack(&S); //初始化栈 for(i=0;i

49、rstedge;p;p→next){ j=p→adjvex; outdegree[j]--; if(!outdegree[j]) Push(&S,j); //出度为零的顶点入栈 }//for }//while if(top

50、//for return 1;       }//else      }//toposort 10.已知深度为h的二叉树采用顺序存储结构存放在数组B[1..2h-1]中,设计一个递归算法,产生该二叉树的二叉链表结构。 void CreateTree(int B[2h],int j,BiTree t){ //创建t树的二叉链表结构,j为数组下标,初值为1 t=( BiTree ) malloc( sizeof(BiTNode)); t->data=B[j]; //创建根结点 if(2*j>2h) t->Lchild=null;//无左子

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服