1、数据结构习题及参考答案数据结构习题及参考答案部门: xxx 时间: xxx整理范文,仅供参考,可下载自行编辑数据结构习题及参考答案一、判断下列叙述的对错。1)线性表的逻辑顺序与物理顺序总是一致的。2)线性表的顺序存储表示优于链式存储表示。3)线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。4)二维数组是其数组元素为线性表的线性表。5)每种数据结构都应具备三种基本运算:插入、删除和搜索。二、设单链表中结点的结构为typedef struct node file:/链表结点定义ElemType data; file:/数据struct node * Link; file:/结点
2、后继指针 ListNode;link = p; p-link = s;B. s-link = p-link; p-link = s;C. s-link = p-link; p = s;D. p-link = s; s-link = p;2)非空的循环单链表first的尾结点link = NULL;B. p = NULL;C. p-link = first;D. p = first;三、设有一个顺序栈S,元素s1, s2, s3, s4, s5, s6依次进栈,如果6个元素的出栈顺序为s2, s3, s4, s6, s5, s1,则顺序栈的容量至少应为多少?b5E2RGbCAP四、一棵具有n个结
3、点的理想平衡二叉树即除离根最远的最底层外其他各层都是满的,最底层有若干结点)有多少层?若设根结点在第0层,则树的高度h如何用n来表示注意n可能为0)?p1EanqFDPw五、从供选择的答案中选择与下面有关图的叙述中各括号相匹配的词句,将其编号填入相应的括号内。1)对于一个具有n个结点和e条边的无向图,若采用邻接表表示,则顶点表的大小为A),所有边链表中边结点的总数为B)。DXDiTa9E3d2)采用邻接表存储的图的深度优先遍历算法类似于树的C)。3)采用邻接表存储的图的广度优先遍历算法类似于树的D)。4)判断有向图是否存在回路,除了可以利用拓扑排序方法外,还可以利用E)。供选择的答案A:nn+
4、1n-1n+eB:e/2e2en+eCD:中根遍历先根遍历后根遍历按层次遍历E:求关键路径的方法求最短路径的Dijkstra方法深度优先遍历算法广度优先遍历算法六、填空题1)在用于表示有向图的邻接矩阵中,对第i行的元素进行累加,可得到第i个顶点的)度,而对第j列的元素进行累加,可得到第j个顶点的)度。RTCrpUDGiT2)一个连通图的生成树是该图的)连通子图。若这个连通图有n个顶点,则它的生成树有)条边。3)给定序列100, 86, 48, 73, 35, 39, 42, 57, 66, 21,按堆结构的定义,则它一定)堆。5PCzVD7HxA4)在进行直接插入排序时,其数据比较次数与数据的
5、初始排列)关;而在进行直接选择排序时,其数据比较次数与数据的初始排列)关。jLBHrnAILg5)利用关键码分别为10, 20, 30, 40的四个结点,能构造出)种不同的二叉搜索树。七、设带表头结点的双向链表的定义为typedef int ElemType;typedef struct dnode file:/双向链表结点定义ElemType data; file:/数据struct dnode * lLink, * rLink; file:/结点前驱与后继指针DblNode;typedef DblNode * DblList; file:/双向链表试设计一个算法,改造一个带表头结点的双向链
6、表,所有结点的原有次序保持在各个结点的右链域rLink中,并利用左链域lLink把所有结点按照其值从小到大的顺序连接起来。xHAQX74J0X八、设有一个关键码的输入序列 55, 31, 11, 37, 46, 73, 63, 02, 07 ,LDAYtRyKfE1)从空树开始构造平衡二叉搜索树,画出每加入一个新结点时二叉树的形态。若发生不平衡,指明需做的平衡旋转的类型及平衡旋转的结果。Zzz6ZB2Ltkn; file:/用二维数组作为邻接矩阵表示typedef struct file:/生成树的边结点int fromVex, toVex; file:/边的起点与终点int weight;
7、file:/边上的权值TreeEdgeNode;typedef TreeEdgeNode MSTn-1; file:/最小生成树定义void PrimMST AdjMatrix G, MST T, int rt ) file:/从顶点rt出发构造图G的最小生成树T,rt成为树的根结点TreeEdgeNode e; int i, k = 0, min, minpos, v;for i = 0; i n; i+ ) file:/初始化最小生成树Tif .fromVex = rt;Tk.toVex = I ;Tk+.weight = Grt;for k = 0; k n-1; k+ ) file:/
8、依次求MST的候选边min = MaxInt ;for i = k; i n-1; i+ ) file:/遍历当前候选边集合if T.weight min ) file:/选具有最小权值的候选边 min = T.weight; minpos = i ; if min = MaxInt ) file:/图不连通,出错处理 cerr “Graph is disconnected!” endl; exit; Tminpos = Tk ; Tk = e;v = Tk.toVex;for i = k+1; i n-1; i+ ) file:/修改候选边集合if T.toVex T.toVex;T.fro
9、mVex = v ;参考答案一、1)错2)错3)对4)错5)对二、1) B 2) C三、3四、h =log2n+1)-1五、A.B.C.D.E.六、出入极小n-1是最小)有无14七、算法如下void sort rlink;file:/指针s指向待插入结点,初始时指向第一个结点while lLink;file:/指针p指向待比较的结点, pre是p的前驱指针while data data )file:/循lLink链寻找结点*s的插入位置 pre = p; p = p-lLink; pre-lLink = s; s-lLink = p; s = s-rLink;file:/结点*s在lLink方
10、向插入到*pre与*p之间八、关键码的输入序列 55, 31, 11, 37, 46, 73, 63, 02, 07 在等概率下查找成功的平均查找长度在等概率下查找不成功的平均查找长度九Tk.toVex = imin = MaxIntminpos = iexit1)T.fromVex = v一、单项选择题1算法指的是) A计算机程序 B解决问题的计算方法 C排序算法 D解决问题的有限运算序列2线性表采用链式存储时,结点的存储地址 ) A必须是不连续的 B连续与否均可 C必须是连续的 D和头结点的存储地址相连续3将长度为n的单链表链接在长度为m的单链表之后的算法的时间复杂度为) AO1) BOn
11、)COm) DOm+n)4由两个栈共享一个向量空间的好处是: ) A减少存取时间,降低下溢发生的机率 B节省存储空间,降低上溢发生的机率 C减少存取时间,降低上溢发生的机率 D节省存储空间,降低下溢发生的机率5设数组datam作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作后其头指针front值为%(m-1EmxvxOtOco Cfront=(front-1%m Dfront=(front+1%mSixE2yXPq56如下陈述中正确的是) A串是一种特殊的线性表B串的长度必须大于零 C串中元素只能是字母D空串就是空白串7若目标串的长度为n,模式串的长度为n/
12、3,则执行模式匹配算法时,在最坏情况下的时间复杂度是)6ewMyirQFL AO ) BOn)COn2) DOn3)8一个非空广义表的表头) A不可能是子表B只能是子表 C只能是原子D可以是子表或原子9假设以带行表的三元组表表示稀疏矩阵,则和下列行表0 2 3 3 5 对应的稀疏矩阵是kavU42VRUsA4B5C6D711在含n个顶点和e条边的无向图的邻接矩阵中,零元素的个数为(AeB2e Cn2eDn22e12假设一个有n个顶点和e条弧的有向图用邻接表表示,则删除与某个顶点vi相关的所有弧的时间复杂度是(y6v3ALoS89AO(nBO(eCO(n+eDO(n*e13用某种排序方法对关键字
13、序列25,84,21,47,15,27,68,35,20)进行排序时,序列的变化情况如下:M2ub6vSTnP20,15,21,25,47,27,68,35,8415,20,21,25,35,27,47,68,8415,20,21,25,27,35,47,68,84则所采用的排序方法是)A选择排序B希尔排序 C归并排序D快速排序14适于对动态查找表进行高效率查找的组织结构是) A有序表B分块有序表 C三叉排序树D线性链表15不定长文件是指) A文件的长度不固定B记录的长度不固定 C字段的长度不固定D关键字项的长度不固定二、填空题16数据的逻辑结构是从逻辑关系上描述数据,它与数据的_无关,是独立
14、于计算机的。17在一个带头结点的单循环链表中,p指向尾结点的直接前驱,则指向头结点的指针head可用p表示为head=_。0YujCfmUCw18栈顶的位置是随着_操作而变化的。19在串S=“structure”中,以t为首字符的子串有_个。20假设一个9阶的上三角矩阵A按列优先顺序压缩存储在一维数组B中,其中B。存储矩阵中第1个元素a1,1,则B中存放的元素是_。eUts8ZQVRd21已知一颗完全二叉树中共有768结点,则该树中共有_个叶子结点。22已知一个图的广度优先生成树如右图所示,则与此相应的广度优先遍历序列为_。23在单链表上难以实现的排序方法有_和_。24在有序表12,24
15、,36,48,60,72,84)中二分查找关键字72时所需进行的关键字比较次数为_。sQsAEJkW5T25多重表文件和倒排文件都归属于_文件。三、解答题26画出下列广义表的共享结构图形表示 P=),(x,y,x,(z)27线性表的顺序存储表示和链式存储表示的特点比较。28已知一个无向图的顶点集为a, b, c, d, e,其邻接矩阵如下所示abcde(1画出该图的图形; =key%13,处理冲突的方法为双重散列法,探查序列为:hi=(h(key+ *h1(key%m =0,1,,m1其中h1(key=key%11+1回答下列问题:1)对表中关键字35,20,33和48进行查找时,所需进行的比
16、较次数各为多少?= 请在空白处填入适当的内容。int comstr(LinkString s1,LinkString s2 /s1和s2为两个链串的头指针 while(s1&s2if(s1datedatereturn1;if(s1dates2datereturn1; if( return1; if(return1; ; 31阅读下面的算法 LinkList mynote(LinkList L /L是不带头结点的单链表的头指针 if(L&L-nextq=L;L=Lnext;p=L;S1:while(pnext p=pnext;S2:pnext=q;qnext=NULL; returnL;请回答下
17、列问题: 1)说明语句S1的功能;2)说明语句组S2的功能; 3)设链表表示的线性表为a1,a2,an),写出算法执行后的返回值所表示的线性表。32假设两个队列共享一个循环向量空间/若第i个队列不满,则元素x入队列,并返回1;否则返回0if(i1return 0;if(Qreari=Qfront return0;Qdata =x;Qreari= 。 return1; 33已知二叉树的存储结构为二叉链表,阅读下面算法。typedef struct node DateType data; Struct node * next;ListNode;typedef ListNode * LinkList
18、 ;LinkList Leafhead=NULL;Void Inorder (BinTree T LinkList s;If(TInorder(Tlchild;If (!Tlchild&(!Trchild s=(ListNode*malloc(sizeof(ListNode; sdata=Tdata; snext=Leafhead; Leafhead=s; Inorder(Trchild; 对于如下所示的二叉树 1)画出执行上述算法后所建立的结构;int arrange(int a。,int 1,int h,int x/1和h分别为数据区的下界和上界int i,j,t; i=1;j=h;w
19、hile(i while(i=xj-; while(i=xi+; if(i t=aj;aj=ai;ai=t; if(aireturn i; elsereturn i1;1)写出该函数的功能;2)写一个调用上述函数实现下列功能的算法:对一整型数组bn中的元素进行重新排列,将所有负数均调整到数组的低下标端,将所有正数均调整到数组的高下标端,若有零值,则置于两者之间,并返回数组中零元素的个数。7EqZcWLZNX数据结构复习题参考答案一、单项选择题1D , , 10 1112 13 14 15lzq7IGf02E二、填空题16存储nextnext 18进栈和退栈 1912 20a4,8 2138422abefcdg23快速排序、堆排序、希尔排序2425.多关键字申明:所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1