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

加入VIP,免费下载
 

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

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

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(中北大学数据结构习题.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

中北大学数据结构习题.docx

1、中北大学数据结构习题算法与数据结构习题第一到三章习题选择题1.对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为(C)0A.O(n)O(n)B.O(n)O(1)C.O(1)O(n)D.O(1)O(1)2.非空的循环单链表head的尾结点p满足(A)。A.P-next=headB.P-next=NILC,p=NILD,p=head3.在单链表指针为p的结点之后插入指针为s的结点,正确的操作是:(B)oA.p-next=s;s-next=p-next;Bs-next=p-next;p-next=s;C.p-next=s;p-next=s-next;Dp-next=s-next;p-nex

2、t=s;4.在双向链表指针p的结点前插入一个指针q的结点操作是(C)注:双向链表的结点结构为(pre,data,next)。A.p-pre=q;q-next=p;p-pre-next=q;q-pre=q;B.p-pre=q;p-pre-next=q;q-next=p;q-pre=p-pre;C.q-next=p;q-pre=p-pre;p-pre-next=q;p-pre=q;D.q-pre=p-pre;q-next=q;p-pre=q;p-pre=q;5.栈的特点是(B),队列的特点是(A),栈和队列都是(AA)。若进栈序列为1,2,3,4则(C)不可能是一个出栈序列(不一定全部进栈后再出栈

3、);若进队列的序列为1,2,3,4则(E)是一个出队列序列。,:A.先进先出B.后进先出C.进优于出D.出优于进:A.顺序存储的线性结构B.链式存储的线性结构C.限制存取点的线性结构D.限制存取点的非线性结构,:A.3,2,1,4B.3,2,4,1C.4,2,3,1D.4,3,2,1E.1,2,3,4F.1,3,2,46.一个栈的输入序列为123,n,若输出序列的第一个元素是n,输出第i(1=inext;p2=pb-next;pa-next=null;s1=0;s2=0;While(p1&p2)if(p1-datadata)p=p1;p1=p1-next;s2=s2+1;delete(p);e

4、lseif(p1-datap2-data)p2=p2-next;else(p1-data=p2-data)p=p1;p1=p1-next;p-next=pa-next;pa-next=p;p2=p2-next;s1=s1+1;While(p1)p=p1;p1=p1-next;delete(p);s2=s2+1解:本程序段功能是将pa和pb链表中的值相同的结点保留在pa链表中(pa中与pb中不同结点删除),pa是结果链表的头指针。链表中结点值与从前逆序。S1记结果链表中结点个数(即pa与pb中相等的元素个数)。S2记原pa链表中删除的结点个数。算法题1.写出下图双链表中对换值为23和15的两个结

5、点相互位置时修改指针的有关语句。结点结构为:(pre,data,next)解:设q=p-pre;贝Uq-next=p-next;p-next-pre=q;p-pre=q-pre;q-pre-next=p;p-next=q;q-pre=p2.顺序结构线性表LA与LB的结点关键字为整数。LA与LB的元素按非递减有序,线性表空间足够大。试给出一种高效算法,将LB中元素合到LA中,使新的LA的元素仍保持非递减有序。高效指最大限度的避免移动元素。解:VoidUnion(seqlistLA,seqlistLB)m=LA.length;n=LB.length;k=m+n-2;i=m-1;j=n-1;whil

6、e(i=0&j=0)if(LA.elemi=LB.elemj)LA.elemk=LA.elemi;k=k-1;i=i-1;elseLA.elemk=LB.elemj;k=k-1;j=j-1;while(j=0)LA.elemk=LB.elemj;k=k-1;j=j-1;3.给定一个带表头结点的单链表,设head为头指针,结点的结构为(data,next),data为整型元素,next为指针;试写出算法:按递增次序输出单链表中各结点的数据元素,并释放结点所占的存储空间。(要求;不允许使用数组作辅助空间)解:voidMiniDelete(LinkedListhead)LinkedList*pre,

7、*p,*u;while(head-next!=null)/循环到仅剩头结点。pre=head;p=pre-next;/p为工作指针,pre为最/4值的前驱while(p-next!=null)if(p-next-datanext-data)pre=p;p=p-next;/记住当前最小值结点的前驱print(%2d,pre-next-data);/输出最小值。u=pre-next;pre-next=u-next;free(u);/删除最小结点free(head);/释放头结点。4,试写一算法在带头结点的单链表结构上实现线性表操作Locate(L,x);解:intLocateElem_L(Link

8、List&L,ElemTypex)inti=0;LinkListp=L;while(p&p-data!=x)p=p-next;i+;if(!p)return0;elsereturni;5,已知单链表中的元素以值递增有序排列。试写一高效的算法,删除表中所有值大于mink且小于maxk的元素,同时释放被删结点空间。解:pre匚umaxk=maL?clnext;while(p&p-datanext;/查找第一个值mink的结点if(P)while(p&p-datanext;/查找第一个值maxk的结点q=pre-next;pre-next=p;/修改指针while(q!=p)s=q-next;del

9、eteq;q=s;/释放结点空间/delete6.试写一高效的算法,删除表中所有值相同的多余元素(使得操作后的线性表中所有元素的值均不相同),同时释放被删结点空间,并分析你的算法的时间复杂度。已知一个非纯集合B,试构造一个纯集合A,使A中只包含B中所有值各不相同的数据元素从集合B取出物件放入集合A要求集合A中同样物件不能有两件以上因此,算法的策略应该和例2-1基本相同,差别仅在于集合A的初始状态是“空集”voidunion(List&La,ListLb)InitList(La);/构造(空的)线性表LALa_len=ListLength(La);Lb_len=ListLength(Lb);fo

10、r(i=1;i=Lb_len;i+)GetElem(Lb,i,e);/取Lb中第i个数据元素赋给eif(!LocateElem(La,e,equal()ListInsert(La,+La_len,e);/LaG未存在和e相同的数据元素,则插入之/for/union例如:(2,3,3,5,6,6,6,8,12)对集合B而言,值相同的数据元素必定相邻对集合A而言,数据元素依值从小至大的顺序插入因此,数据结构改变了,解决问题的策略也相应要改变。voidpurge(List&La,ListLb)InitList(LA);La_len=ListLength(La);Lb_len=ListLength(L

11、b);/求线性表的长度for(i=1;i=Lb_len;i+)GetElem(Lb,i,e);/取Lb中第i个数据元素赋给eif(ListEmpty(La)|!equal(en,e)ListInsert(La,+La_len,e);en=e;/La中不存在和e相同的数据元素,则插入之/for/purge第四章串习题1.下面关于用的的叙述中,哪一个是不正确的?(B)A.用是字符的有限序列B.空用是由空格构成的用C.模式匹配是用的一种重要运算D.用既可以采用顺序存储,也可以采用链式存储2.设有两个用p和q,其中q是p的子用,求q在p中首次出现的位置的算法称为(C)A.求子用B.联接C.匹配D.求用

12、长3.用ababaaababaa的next数组为(C)。A.012345678999B.012121111212C.011234223456D.01230123223454.字符用ababaabab的nextval为(A)A.(0,1,0,1,0,4,1,0,1)B.(0,1,0,1,0,2,1,0,1)C.(0,1,0,1,0,0,0,1,1)D.(0,1,0,1,0,1,0,1,1)5、设字符用S=aabaabaabaac,T=aabaac(1)给出S和T的next值和nextval值;(2)若S作主用,T作模式用,试给出利用BF算法和KMPJ法的匹配过程。解:(1)S的next与next

13、val值分另为012123456789和002002002009;t的next与nextval值分别为012123和002003。(2)利用BF算法的匹配过程:第趟匹酉己:aabaabaabaacaabaac(i=6,j=6)aabaac(i=6,j=6)第二趟匹酉己:aabaabaabaacaa(i=3,j=2)(aa)baac第三趟匹酉己:aabaabaabaaca(i=3,j=1)(成功)(aa)baac第四趟匹酉己:aabaabaabaacaabaac(i=9,j=6)第五趟匹酉己:aabaabaabaacaa(i=6,j=2)第六趟匹酉己:aabaabaabaaca(i=6,j=1)

14、第七趟匹酉己:aabaabaabaac利用KMPJ法的匹配过程:第趟匹酉己:aabaabaabaac第二趟匹酉己:aabaabaabaac第三趟匹酉己:aabaabaabaac成功)aabaac(i=13,j=7)第6章树和二叉树习题选择题1、已知一算术表达式的中缀形式为A+B*C-D/E,后缀形式为ABC*+DE/-,其前缀形式为(D)A.-A+B*C/DEB.-A+B*CD/EC.-+*ABC/DED.-+A*BC/DE2、设森林F中有三棵树,第一,第二,第三棵树的结点个数分别为M1,M2和M3与森林F对应的二叉树根结点的右子树上的结点个数是(D)。A.M1B.M1+M2C.M2+M33、

15、有关二叉树下列说法正确的是(A.二叉树的度为2B.一棵二叉树白度可以小于2C.二叉树中至少有一个结点的度为D.二叉树中任何一个结点的度都为4、二叉树的第I层上最多含有结点数为(C)A.2IB.2I-1-1C.2I-1D.2I-15、一个具有1025个结点的二叉树的高八为(C)10至1024之间A.11B.10C.11至1025之间D解析:具有n6、高度为K的二叉树最大的结点数为(C)。A.2kB.2k-1C.2k-1D.2k-1-17、利用二叉链表存储树,则根结点的右指针是(C)。A.指向最左孩子B.指向最右孩子C.空D.非空8、对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左、

16、右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用(C)次序的遍历实现编号。A.先序B.中序C.后序D.从根开始按层次遍历9、某二叉树中序序列为A,B,C,D,E,F,G,后序序列为B,D,C,A,F,G,E则先序序列是:BA.E,G,F,A,C,D,BB.E,A,C,B,D,G,FC.E,A,G,C,F,B,DD.上面的都不对10、上题的二叉树对应的森林包括多少棵树(B)A.lB.2C.3D.概念上是错误的11、一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足(C)A.所有的结点均无左孩子B.所有的结点均无右孩子C.只有一个叶子结点D.是任意

17、一棵二叉树12、在二叉树结点的先序序列,中序序列和后序序列中,所有叶子结点的先后顺序(B)A.都不相同B.完全相同C.先序和中序相同,而与后序不同D.中序和后序相同,而与先序不同13、在完全二叉树中,若一个结点是叶结点,则它没(C)。A.左子结点B.右子结点C.左子结点和右子结点D.左子结点,右子结点和兄弟结点14、n个结点的线索二叉树上含有的线索数为(C)A.2nB.n-lC.n+1D.n(解析:一棵n结点树包含n-1条边,而每个结点有两个指针域即总共2n个指针,减去表示边的指向关系(即左右子树)的n-1条边,剩下n+1条边即为线索。)15、下述编码中哪一个不是前缀码(B)。A.(00,01

18、,10,11)B.(0,1,00,11)C.(0,10,110,111)D.(1,01,000,001)(解析:一组编码中任何一个编码均不为其他编码的前缀.避免了多义性,且缩短了报文总长)16、在下述结论中,正确的是(D)只有一个结点的二叉树的度为0;二叉树的度为2;二叉树的左右子树可任意交换;深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。A.B.C.D.17、若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是(B)A.9B.11C.15D.不确定(解析:任意一棵二叉树,度为零的节点即叶子节点的数比度为二的节点多一。)18、具有10个叶结点的二叉树中有(B

19、)个度为2的结点A.8B.9C.10D.1l19、一棵完全二叉树上有1001个结点,其中叶子结点的个数是(D)(1023是满二叉树,有512片叶子。1001比1023少22个结点,所以有512-22+22/2=501片叶子。511是满二叉树,有256片叶子。1001比511多490个结点,所以有256+490-(490+1)/2=501片叶子。所以答案就是501了。)A.250B.500C.254D.50120、有n个叶子的哈夫曼树的结点总数为(D)。A,不确定B.2nC.2n+1D.2n-121、二叉树的先序遍历和中序遍历如下:先序遍历:EFHIGJK中序遍历:HFIEJKG。该二叉树根的右

20、子树的根是(C)。A、EB、FC、GD、H22、设森林F对应的二叉树为B,它有m个结点,B的根为p,p的右子树结点个数为n,森林F中第一棵树的结点个数是(A)A.m-nB.m-n-1C.n+1D.条件不足,无法确定23、用一维数组存储二叉树时,总是以(D)遍历顺序存储结点A.先序B.中序C.后序D,按层次遍历24、对一棵二叉树进行层次遍历时,应借助于一个(D)。A.顺序表B.数组C.栈D.队列25、某二叉树的先序序列和后序序列正好相反,则该二叉树一定是(C)的二叉树。A.空或只有一个结点B.任一结点无左子树C,高度等于其结点数D.任一结点无右子树26、设树T的度为4,其中度为1,2,3和4的结

21、点个数分别为4,2,1,1则T中的叶子数为(D)A.5B.6C.7D.8(设度为0的结点数为n0,度为1的结点数为n1,度为2的结点数为n2,度为3的结点数为n3,度为4的结点数为n4,那么这棵树总的结点数为n0+n1+n2+n3+n4;又因为树中的每个结点(除了根结点外)都有一个指针指向它,那么这棵树总的结点数为总的指针数加上1;总的指针数=1*n1+2*n2+3*n3+4*n4;故有:1+1*n1+2*n2+3*n3+4*n4=n0+n1+n2+n3+n4;从而有n0=1+n2+2*n3+3*n4=1+2+2*1+3*1=8;)27、将一棵树t转换为孩子一兄弟链表表示的二叉树h,则t的后根

22、序遍历是h的(B)A.先序遍历B.中序遍历C.后序遍历28、某二叉树T有n个结点,设按某种顺序对T中的每个结点进行编号,编号为1,2,n,且有如下性质:T中任一结点V,其编号等于左子树上的最小编号减1,而V的右子树的结点中,其最小编号等于V左子树上结点的最大编号加1。这时是按(B)编号的。A.中序遍历序列B.先序遍历序列C.后序遍历序列D.层次顺序应用题1、从概念上讲,树,森林和二叉树是三种不同的数据结构,将树,森林转化为二叉树的基本目的是什么,并指出树和二叉树的主要区别。答:树的孩子兄弟链表表示法和二叉树二叉链表表示法,本质是一样的,只是解释不同,也就是说树(森林的特例)可用二叉树唯一表示,

23、并可使用二叉树的一些算法去解决树和森林中的问题。树和二叉树的区别有:一是二叉树的度至多为2,树无此限制;二是二叉树有左右子树之分,即使在只有一个分枝的情况下,也必须指出是左子树还是右子树,树无此限制。2、试找出满足下列条件的二叉树1)先序序列与后序序列相同;2)中序序列与后序序列相同;3)先序序列与中序序列相同;1)、既不含左子树,也不含右子树的二叉树。2)、不含右子树的二叉树。3)、不含左子树的二叉树。3、已知一棵度为k的树中有ni个度为1的结点,奥个度为2的结点,一个度为k的结点,问该树中有多少个叶子结点?解:根据树的定义,在一颗树中,除树根结点外,每个结点有且仅有一个前驱结点,也就是说,

24、每个结点与指向它的一个分支一一对应,所以除树根结点之外的结点树等于所有结点的分支数,即度数,从而可得树中的结点数等于所有结点的度数加1。总结点数为1n12n23n3knk而度为0的结点数就应为总结点数减去度不为0的结点数的总和,即kn0=1n12n23n3.knk-(nn2n3nk)=1%(i1)ni-J5、用一维数组存放的一棵完全二叉树如下图所示:ABCDEFGHIJKL写出后序遍历该二叉树时访问结点的顺序。解析:用一维数组存储二叉树时,总是以层次遍历顺序存储结点答:HIDJKEBLFGCA6、对下图所示二叉树分别按先序、中序、后序遍历,给出相应的结点序列,同时给二叉树加上中序线索。(1)先序序列:ABDEHCFG(2)中序序列:DHEBAFCG(3)后序序列:HEDBFGCAA7、设一棵二叉树的先序、中序遍历序列分别为先序遍历序列:CnullABDFCEGH中A序遍历JWhBFDAGEHC(1)画出这棵二叉树。(2)将这棵二叉树转换成对应的树(或森林)尸

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1