数据结构单元8练习参考答案
智慧树知到《数据结构》章节测试答案

第1章单元测试1、算法的时间复杂度取决于___。
答案:A和B2、数据在计算机内存中的表示是指()答案:数据的存储结构3、算法指的是()答案:求解特定问题的指令有限序列4、在数据结构中,与所使用的计算机无关的数据结构是()答案:逻辑7、某线性表采用顺序存储结构,每个元素占4个存储单元,首地址为100,则第12个元素的存储地址为( )。
答案:1448、算法能正确地实现预定功能的特性称为算法的()。
答案:正确性第2章单元测试1、链表不具备的特点是()。
答案:可随机访问任意一个结点3、线性表的顺序存储表示优于链式存储表示。
答案:错4、顺序存储结构的缺点是不便于修改,插入和删除需要移动很多结点。
答案:对5、在设头、尾指针的单链表中,与长度n有关的操作是( )。
答案:删除最后一个结点6、设指针q指向单链表中结点A,指针p指向单链表中结点A的后继结点B,指针s指向被插入的结点X,则在结点A和结点B间插入结点X的操作序列为( )。
答案:q->next=s; s->next=p;7、对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为( )。
答案:用尾指针表示的循环单链表8、在一个单链表中,若p所指节点不是最后节点,在p之后插入s所指节点,则执行( )。
答案:s->link=p->link;p->link=s;9、在双向链表存储结构中,删除p所指的结点时须修改指针____。
答案:p->next->prior=p->prior; p->prior->next=p->next;10、若事先不知道线性表的长度,则处理线性表时较好的存储结构是( )。
答案:单链表11、向一个有127个元素的顺序表中插入一个新元素并保存,原来顺序不变,平均要移动( )个元素。
答案:63.512、某线性表采用顺序存储结构,每个元素占4个存储单元,首地址为100,则第12个元素的存储地址为( )。
《数据结构》第八章习题参考答案 (1)

有向图的任意顶点的度=邻接表中顶点所对应边链表中结点个数+逆邻接表中顶点所对应边链表中结点个数;
4、课本P3928.3题
【解答】
n个顶点的无向连通图至少有n-1条边,n个பைடு நூலகம்点的无向强连通图至少有n(n-1)/2条边;n个顶点的有向连通图至少有n条边,n个顶点的有向强连通图至少有n(n-1)条边。
上面不正确的是(A)。
A.(1),(2),(3) B.(1) C.(1),(3) D.(2),(3)
5、下列说法不正确的是(C)。
A.图的遍历是从给定的源点出发每一个顶点仅被访问一次
B.遍历的基本算法有两种:深度遍历和广度遍历
C.图的深度遍历不适用于有向图
D.图的深度遍历是一个递归过程
三、填空题
1、判断一个无向图是一棵树的条件是_有n个顶点,n-1条边的无向连通图_。
注: 答案并不唯一
2、课本P3928.1题
【解答】
(1)不是强连通图
(2)简单路径如:D->B->C->F
(3)略
(4)邻接表见图,其他略
3、课本P3928.2题
【解答】
(1)邻接矩阵表示:无向图的边数为
矩阵中非零元素的个数/2;有向图的边数为矩阵中非零元素的个数。
邻接表表示时:无向图的边数为邻接表中边结点的个数/2;有向图的边数为邻接表中边结点的个数。
(2)(3)略
12、课本P3958.24题
【解答】
A->B : 10
A->B->D: 15
A->B->D->C : 17
A->B->D->E : 17
华文慕课数据结构与算法(上)(北京大学)章节测验答案

解忧书店 JieYouBookshop第二章单元测试1、(1分)以下哪种结构是逻辑结构,而与存储和运算无关:Which of the following structure is a logical structure regardless of the storage or algorithm:(There is only one correct answer)A、队列(queue)B、双链表(doubly linked list)C、数组(array)D、顺序表(Sequential list)答案: A2、(1分)计算运行下列程序段后m的值:Calculate the value of m after running the following program segmentn = 9; m = 0;for (i=1;i<=n;i++)for (j = 2*i; j<=n; j++)m=m+1;求m的值答案: 203、(1分)下列说法正确的是:Which options may be correct?(there are more than one correct answers)A、如果函数f(n)是O(g(n)),g(n)是O(h(n)),那么f(n)是O(h(n))【 if f(n) is O(g(n)),g(n) is O(h(n)),then f(n) is O(h(n))】B、如果函数f(n)是O(g(n)),g(n)是O(h(n)),那么f(n)+g(n)是O(h(n))【if f(n) is O(g(n)),g(n) is O(h(n)),so f(n)+g(n) is O(h(n))】C、如果a>b>1,logan是O(logbn),但logbn不一定是O(logan)【if a>b>1,logan is O(logbn),logbn may not be O(logan)】D、函数f(n)是O(g(n)),当常数a足够大时,一定有函数g(n)是O(af(n))【if f(n)是O(g(n)),When constant a is big enough ,there must be g(n) is O(af(n))】答案: A,B4、(1分)由大到小写出以下时间复杂度的序列:答案直接写标号,如:(1)(2)(3)(4)(5) (提示:系统基于字符匹配来判定答案,所以您的答案中不要出现空格)Write the following time complexity in descending sequence:Write down the answer labels such as (1)(2)(3)(4)(5). (Hint:This problem is judged by string matching, Please make sure your answer don't contain any blanks. )RUX4%GXZNDD{IAQWTCSEEJG.png答案: (5)(1)(2)(4)(3)5、(1分)已知一个数组a的长度为n,求问下面这段代码的时间复杂度:An array of a, its length is known as n. Please answer the time complexity of the following code.(There are more than one answers.)for (i=0,length=1;i<n-1;i++){for (j = i+1;j<n && a[j-1]<=a[j];j++)if(length<j-i+1)length=j-i+1;}Screen Shot 2017-09-05 at 23.31.19.pngA、如图,A选项B、如图,B选项C、如图,C选项D、如图,D选项答案: A,B第三章单元测试1、(1分)下面关于线性表的叙述中,正确的是哪些?Which of the followings about linear list are correct?(There are more than one answers.)Select the answer that matchesA、线性表采用顺序存储,必须占用一片连续的存储单元。
大学计算机《数据结构》试卷及答案(八)

大学计算机《数据结构》试卷及答案一、选择题(30分)1.设一维数组中有n个数组元素,则读取第i个数组元素的平均时间复杂度为()。
(A) O(n) (B) O(nlog2n) (C) O(1) (D) O(n2)2.设一棵二叉树的深度为k,则该二叉树中最多有()个结点。
(A) 2k-1 (B) 2k(C) 2k-1(D) 2k-13.设某无向图中有n个顶点e条边,则该无向图中所有顶点的入度之和为()。
(A) n (B) e (C) 2n (D) 2e4.在二叉排序树中插入一个结点的时间复杂度为()。
(A) O(1) (B) O(n) (C) O(log2n) (D) O(n2)5.设某有向图的邻接表中有n个表头结点和m个表结点,则该图中有()条有向边。
(A) n (B) n-1 (C) m (D) m-16.设一组初始记录关键字序列为(345,253,674,924,627),则用基数排序需要进行()趟的分配和回收才能使得初始关键字序列变成有序序列。
(A) 3 (B) 4 (C) 5 (D) 87.设用链表作为栈的存储结构则退栈操作()。
(A) 必须判别栈是否为满(B) 必须判别栈是否为空(C) 判别栈元素的类型(D) 对栈不作任何判别8.下列四种排序中()的空间复杂度最大。
(A) 快速排序(B) 冒泡排序(C) 希尔排序(D) 堆9.设某二叉树中度数为0的结点数为N0,度数为1的结点数为N l,度数为2的结点数为N2,则下列等式成立的是()。
(A) N0=N1+1 (B) N0=N l+N2(C) N0=N2+1 (D) N0=2N1+l10.设有序顺序表中有n个数据元素,则利用二分查找法查找数据元素X的最多比较次数不超过()。
(A) log2n+1 (B) log2n-1 (C) log2n (D) log2(n+1)二、填空题(42分)1.设有n个无序的记录关键字,则直接插入排序的时间复杂度为________,快速排序的平均时间复杂度为_________。
(完整版)数据结构与算法第8章答案

第8 章排序技术课后习题讲解1. 填空题⑴排序的主要目的是为了以后对已排序的数据元素进行()。
【解答】查找【分析】对已排序的记录序列进行查找通常能提高查找效率。
⑵对n个元素进行起泡排序,在()情况下比较的次数最少,其比较次数为()。
在()情况下比较次数最多,其比较次数为()。
【解答】正序,n-1,反序,n(n-1)/2⑶对一组记录(54, 38, 96, 23, 15, 72, 60, 45, 83)进行直接插入排序,当把第7个记录60插入到有序表时,为寻找插入位置需比较()次。
【解答】3【分析】当把第7个记录60插入到有序表时,该有序表中有2个记录大于60。
⑷对一组记录(54, 38, 96, 23, 15, 72, 60, 45, 83)进行快速排序,在递归调用中使用的栈所能达到的最大深度为()。
【解答】3⑸对n个待排序记录序列进行快速排序,所需要的最好时间是(),最坏时间是()。
【解答】O(nlog2n),O(n2)⑹利用简单选择排序对n个记录进行排序,最坏情况下,记录交换的次数为()。
【解答】n-1⑺如果要将序列(50,16,23,68,94,70,73)建成堆,只需把16与()交换。
【解答】50⑻对于键值序列(12,13,11,18,60,15,7,18,25,100),用筛选法建堆,必须从键值为()的结点开始。
【解答】60【分析】60是该键值序列对应的完全二叉树中最后一个分支结点。
2. 选择题⑴下述排序方法中,比较次数与待排序记录的初始状态无关的是()。
A插入排序和快速排序B归并排序和快速排序C选择排序和归并排序D插入排序和归并排序【解答】C【分析】选择排序在最好、最坏、平均情况下的时间性能均为O(n2),归并排序在最好、最坏、平均情况下的时间性能均为O(nlog2n)。
⑵下列序列中,()是执行第一趟快速排序的结果。
A [da,ax,eb,de,bb] ff [ha,gc]B [cd,eb,ax,da] ff [ha,gc,bb]C [gc,ax,eb,cd,bb] ff [da,ha]D [ax,bb,cd,da] ff [eb,gc,ha]【解答】A【分析】此题需要按字典序比较,前半区间中的所有元素都应小于ff,后半区间中的所有元素都应大于ff。
数据结构与算法 模拟试卷七、八及参考答案

模拟试卷七一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题干后的括号内。
每小题1分,共10分)1.假设执行语句S的时间为O(1),则执行下列程序段for(i=1;i<=n;i++)for(j=i;j<=n;j++)S;的时间为( )A)O(n)B)O(n2)C)O(n*i)D)O(n+i)2.设栈最大长度为3,入栈序列为1,2,3,4,5,6,则不可能的出栈序列是()。
A)1,2,3,4,5,6 B)2,1,3,4,5,6C)3,4,2,1,5,6 D)4,3,2,1,5,63.设单链表的结点结构为(data,next),已知指针q所指结点是指针p所指结点的直接前驱,如在*q与*p之间插入结点*s,则应执行的操作为()。
A)s->next=p->next; p->next=s; B)q->next=s; s->next=p;C)p->next=s-next; s->next=p; D)p->next=s; s-next=q;4.串S='ABC DEF'的串长为()。
A)3 B)4C)7 D)85.下面二叉树按()遍历得到的序列是FEDBIHGCA。
A)先序B)中序C)后序D)层次6.用Floyd算法求每一对顶点之间的最短路径的时间复杂度为()。
A)O(n) B)O(n2)C)O(n3) D)O(nlogn)7.具有n个顶点的无向图,它可能具有的边数的最大值为()。
A)(n2+n)/2 B)n2C)(n2-n)/2 D)n8.二分查找法要求被查找的表是()。
A)顺序表B)链接表C)顺序表且是按值递增或递减次序排列D)不受上述的任何限制9.在一待散列存储的线性表(18,25,63,50,42,32,90),若选用h(k)=k % 7作为散列函数,则与元素18冲突的元素有( )个。
A)0 B)1C)2 D)310.在下列排序算法中,不稳定的是()。
数据结构练习题及参考答案

《数据结构》练习题一、解答题(共50分)1、(8分)假设用于通讯的电文字符集及其出现的频率如下表所示。
请为这8个字符设计哈夫曼编码,并画出其哈夫曼树,计算WPL 。
2. (8分)若一棵二叉树中序遍历和后序遍历序列分别为:DBEHGAFIC 和DHGEBIFCA 。
试画出这棵二叉树,并写出其先序遍历和层序遍历序列。
3.(16分)以下无向网络以邻接表为存储结构(假设邻接表的顶点表按字母a 、b 、c 、d 、e 、f 、g 、h 的顺序依次存储,邻接表的边表结点按顶点的下标由小到大链接)。
请画出其邻接表,并写出从顶点f 出发,分别进行深度和广度优先遍历的序列,写出用Prime 方法从顶点c开始产生最小生成树的边的序列。
4.(8分)已知键值序列为(44,39,67,25, 52,59,43,84,54,58,15,26,12,73,92,69),取填充因子α=0.8,采用线性探查法处理冲突,试构造散列表。
⒌(5分)已知一组记录为(67,88,15,12,60,37,7,31,45,81),用希尔排序方法进行排序,d1=5,d2=3,d3=1,则第二趟的排序结果是( )。
⒍(5分)已知一组记录为(67,88,15,12,60,37,7,31,45,81) ,用堆(大根堆)排序方法进行排序,第一趟的排序结果是( )。
二、完善程序(共20分,每空2分)1.假设一组递减有序的原始数据存储在数组r 中,存放元素的下标下限为low,下标上字符 出现频率 a 0.05 b 0.03 c 0.24 d 0.16 e 0.08 f 0.24 g 0.18 h0.02限为high,以下是在数组中查找数值为k的折半查找算法。
请填空完善程序。
int BinSearch(int r[ ], int low,int high,int k){ int l,h,m;l= low; h= high;while ( ⑴){m= ⑵;if (k < r[m]) ⑶;else if (k > r[m]) ⑷;else return m;}return 0;}2. 以下程序功能是将数组r中,从下标first到end之间的元素进行快速排序的分区。
计算机专业基础综合(数据结构)模拟试卷8(题后含答案及解析)

计算机专业基础综合(数据结构)模拟试卷8(题后含答案及解析) 题型有:1. 单项选择题 2. 综合应用题单项选择题1-40小题,每小题2分,共80分。
下列每题给出的四个选项中,只有一个选项是最符合题目要求的。
1.若某线性表中最常用的操作是在最后一个结点之后插入一个结点和删除第一个结点,则下面最节省运算时间的存储方式是( )。
A.单链表B.带有头指针的单循环链表C.双链表D.带有尾指针的单循环链表正确答案:D解析:在链表中的最后一个结点之后插入一个结点要知道终端结点的地址,所以,单链表、带有头指针的单循环链表、双链表都不合适。
考虑在带有尾指针的单循环链表中删除第一个结点,其时间性能是O(1),所以答案是D。
知识模块:数据结构2.已知两个长度分别为l和s的降序链表,若将它们合并为一个长度为l+s 的升序链表,则最坏情况下的时间复杂度是( )。
A.D(l)B.D(ls)C.D(min(l,s))D.D(max(l,s))正确答案:D解析:在合并过程中,最坏的情况是两个链表中的元素依次进行比较,比较的次数最少是m和n中的最大值。
知识模块:数据结构3.线性表中存放的主要是( )。
A.整型常量B.字符C.数据元素D.信息元素正确答案:C解析:线性表中主要存放的是数据元素,而数据元素可以是整型也可以是字符型,但对于一个线性表来说,所有的数据元素的类型必须相同。
知识模块:数据结构4.下面的叙述中正确的是( )。
I.线性表在链式存储时,查找第i个元素的时间同i的值成正比Ⅱ.线性表在链式存储时,查找第i个元素的时间同i的值无关Ⅲ.线性表在顺序存储时,查找第i个元素的时间同i的值成正比A.仅ⅠB.仅ⅡC.仅ⅢD.Ⅰ、Ⅱ、Ⅲ正确答案:A解析:在线性表链式存储结构中,查找第i个元素的时间与i的位置成正比。
而在顺序存储结构中查找第i个元素的时间与i的位置无关。
知识模块:数据结构5.对于某线性表来说,主要的操作是存取任一指定序号的元素和在最后进行插入运算,那么应该选择( )存储方式最节省时间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单元练习8一.判断题(下列各题,正确的请在前面的括号内打√;错误的打╳)(√)(1)图可以没有边,但不能没有顶点。
(ㄨ)(2)在无向图中,(V1,V2)与(V2,V1)是两条不同的边。
(ㄨ)(3)邻接表只能用于有向图的存储。
(√)(4)一个图的邻接矩阵表示是唯一的。
(ㄨ)(5)用邻接矩阵法存储一个图时,所占用的存储空间大小与图中顶点个数无关,而只与图的边数有关。
(ㄨ)(6)有向图不能进行广度优先遍历。
(√)(7)若一个无向图的以顶点V1为起点进行深度优先遍历,所得的遍历序列唯一,则可以唯一确定该图。
(√)(8)存储无向图的邻接矩阵是对称的,因此只要存储邻接矩阵的上三角(或下三角)部分就可以了。
(ㄨ)(9)用邻接表法存储图时,占用的存储空间大小只与图中的边数有关,而与结点的个数无关。
(√)(10)若一个无向图中任一顶点出发,进行一次深度优先遍历,就可以访问图中所有的顶点,则该图一定是连通的。
二.填空题(1)图常用的存储方式有邻接矩阵和邻接表等。
(2)图的遍历有:深度优先搜和广度优先搜等方法。
(3)有n条边的无向图邻接矩阵中,1的个数是 _2n____。
(4)有向图的边也称为 _ 弧___ 。
(5)图的邻接矩阵表示法是表示 __顶点____之间相邻关系的矩阵。
(6)有向图G用邻接矩阵存储,其第i行的所有元素之和等于顶点i的 __出度____。
(7)n个顶点e条边的图若采用邻接矩阵存储,则空间复杂度为:O(n2)。
(8)n个顶点e条边的图若采用邻接表存储,则空间复杂度为:O(n+e)。
(9)设有一稀疏图G,则G采用 _邻接表____存储比较节省空间。
(10)设有一稠密图G,则G采用 _邻接矩阵____存储比较节省空间。
(11)图的逆邻接表存储结构只适用于 __有向____图。
(12) n个顶点的完全无向图有 n(n-1)/2_ 条边。
(13)有向图的邻接表表示适于求顶点的出度。
(14)有向图的邻接矩阵表示中,第i列上非0元素的个数为顶点V i的入度。
(15)对于具有n个顶点的图,其生成树有且仅有n-1 条边。
(16)对n个顶点,e条弧的有向图,其邻接表表示中,需要n+e 个结点。
(17)从图中某一顶点出发,访遍图中其余顶点,且使每一顶点仅被访问一次,称这一过程为图的遍历。
(18)无向图的邻接矩阵一定是对称矩阵。
-(19)一个连通网的最小生成树是该图所有生成树中权最小的生成树。
(20)若要求一个稠密图G的最小生成树,最好用Prim 算法来求解。
三.选择题(1)在一个图中,所有顶点的度数之和等于图的边数的( C )倍。
A.1/2 B. 1 C. 2 D. 4(2)在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的( B )倍。
A.1/2 B. 1 C. 2 D. 4(3)对于一个具有n个顶点的有向图的边数最多有( B )。
A.n B.n(n-1) C.n(n-1)/2 D.2n(4)在一个具有n个顶点的无向图中,要连通全部顶点至少需要( C )条边。
A.n B.n+1 C. n-1 D.n/2(5)有8个结点的有向完全图有( C )条边。
A.14 B. 28 C. 56 D. 112(6)深度优先遍历类似于二叉树的( A )。
A.先序遍历 B.中序遍历 C.后序遍历 D.层次遍历(7)广度优先遍历类似于二叉树的( D )。
A.先序遍历 B.中序遍历 C.后序遍历 D.层次遍历(8)任何一个无向连通图的最小生成树( A )。
A.只有一棵 B.一棵或多棵 C.一定有多棵 D.可能不存在(9)无向图顶点v的度是关联于该顶点( B )的数目。
A.顶点 B.边 C.序号 D.下标(10)有n个顶点的无向图的邻接矩阵是用( B )数组存储。
A.一维B.n行n列C.任意行n列 D.n行任意列(11)对于一个具有n个顶点和e条边的无向图,采用邻接表表示,则表头向量大小为( C )。
A.n-1 B.n+1 C.n D.n+e(12)在图的表示法中,表示形式唯一的是( A )。
A.邻接矩阵表示法 B.邻接表表示法C.逆邻接表表示法 D.邻接表和逆邻接表表示法(13)在一个具有n个顶点e条边的图中,所有顶点的度数之和等于( C )。
A.n B.e C. 2n D.2e(14)下列图中,度为3的结点是( B )。
-A .V 1 B. V 2 C. V 3 D. V 4 (15)下列图是( A )。
A .连通图 B. 强连通图 C. 生成树 D. 无环图(16)如下图所示,从顶点a 出发,按深度优先进行遍历,则可能得到的一种顶点序列为( D )。
A . a ,b ,e ,c ,d ,fB . a ,c ,f ,e ,b ,d C. a ,e ,b ,c ,f ,d D. a ,e ,d ,f ,c ,b(17)如下图所示,从顶点a 出发,按广度优先进行遍历,则可能得到的一种顶点序列为( A )。
A. a ,b ,e ,c ,d ,fB. a ,b ,e ,c ,f ,dC. a ,e ,b ,c ,f ,dD. a ,e ,d ,f ,c ,b(18)最小生成树的构造可使用( A )算法。
A .prim 算法B .卡尔算法C .哈夫曼算法D .迪杰斯特拉算法(19)下面关于图的存储结构的叙述中正确的是( A )。
A . 用邻接矩阵存储图,占用空间大小只与图中顶点数有关,而与边数无关B . 用邻接矩阵存储图,占用空间大小只与图中边数有关,而与顶点数无关C . 用邻接表存储图,占用空间大小只与图中顶点数有关,而与边数无关D . 用邻接表存储图,占用空间大小只与图中边数有关,而与顶点数无关 (20)连通分量是( C )的极大连通子图。
A .树B .图C .无向图D .有向图四.应用题(30分)-1.有向图如下图所示,画出邻接矩阵和邻接表解:(1)邻接矩阵 1 2 3 4 5⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛0100000001100000100010110543212. 已知一个无向图有6个结点,9条边,这9条边依次为(0,1),(0,2),(0,4),(0,5),(1,2),(2,3),(2,4),(3,4),(4,5)。
试画出该无向图,并从顶点0出发,分别写出按深度优先搜索和按广度优先搜索进行遍历的结点序列。
(5分) 解:从顶点0出发的深度优先搜索遍历的结点序列:0 1 2 3 4 5(答案不唯一) 从顶点0出发的广度优先搜索遍历的结点序列:0 1 2 4 5 3(答案不唯一)3. 已知一个无向图的顶点集为:{a ,b ,c ,d ,e},其邻接矩阵如下,画出草图,写出顶点a 出①②③④⑤-发按深度优先搜索进行遍历的结点序列。
(5分)解:(1)(2)深度优先搜索:a b d c e (答案不唯一)广度优先搜索:a b e d c (答案不唯一)4.网G 的邻接矩阵如下,试画出该图,并画出它的一棵最小生成树。
解:5. 已知某图G 的邻接矩阵如图,(1)画出相应的图; (2)要使此图为完全图需要增加几条边。
解: (1)(2) 完全无向图应具有的边数为:n*(n-1)1/2=4*(4-1)/2=6,所以还要增加2条边(如右图)。
⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡0110110110110000100110010⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡0101101001011010⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡07013070401104031013030801110806.已知如图所示的有向图,请给出该图的:(1)每个顶点的入/出度;(2)邻接表;(3)邻接矩阵。
解:(1)(2)(3)7.如图,请完成以下操作:(2)写出无向带权图的邻接矩阵;(3)设起点为a,求其最小生成树。
解:(1)邻接矩阵为:(2)起点为a,可以直接由原始图画出最小生成树顶点 1 2 3 4 5 6入度 3 2 1 1 2 2出度0 2 2 3 1 3⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎣⎡∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞64562523637945675555539554348.给定下列网G:(1) 画出网G 的邻接矩阵;(2) 画出网G 的最小生成树。
解:(1)邻接矩阵 (2)最小生成树⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞1012696841015121520982012412五.程序题填空题图G 为有向无权图,试在邻接矩阵存储结构上实现删除一条边(v,w)的操作:DeleteArc(G,v,w)。
若无顶点v 或w ,返回“ERROR ”;若成功删除,则边数减1,并返回“OK ”。
(提示:删除一条边的操作,可以将邻接矩阵的第i 行全部置0 ) 解:Status DeleteArc(MGraph &G,char v,char w) //在邻接矩阵表示的图G 上删除边(v,w) { if ((i=LocateVex(G,v))<0) return ERROR ; if ((j=LocateVex(G,w))<0) return ERROR ; if (G.arcs[i][j].adj) { G.arcs[i][j].adj= 0 ;G.arcnum -- ; (或 G.arcnum=G.arcnum-1 ) }return OK ; }六.算法题1. 编写一个无向图的邻接矩阵转换成邻接表的算法。
2. 以知有n 个顶点的有向图邻接表,设计算法分别实现以下功能: (1)求出图G 中每个顶点的出度、入度。
(2)求出G 中出度最大的一个顶点,输出其顶点序号。
FB EA CGD(3)计算图中度为0的顶点数。
1.解:本题思想是逐个扫描邻接矩阵的各个元素,若第i行第j列的元素为1,则相应的邻接表的第i个单链表上增加一个j结点。
void trans(int edges[n][n],Adjlist adj){ int i,j;edgenode *p;for (i=0;i<n;i++){ adj[i].data=i;adj[i].link=NULL;}for (i=0;i<n;i++)for (j=0;j<n;j++){ if(edges[i][j]==1){ p=(edgenode *) malloc (sizeof(edgenode));p->adjvex=j;p->next=adj[i].link;adj[i].link=p;}}}2.(1)求出度的思想:计算出邻接表中第i个单链表的结点数即可。
int outdegree(adjlist adj,int v){ int degree=0;edgenode *p;p=adj[v].link;while (p!=NULL){ degree++;p=p->next;}return degree;}void printout(adjlist adj,int n){ int i,degree;printf("The Outdegree are:\n");for(i=0;i<n;i++){ degree=outdegree(adj,i);printf("(%d,%d)",i,degree);}}求入度的思想:计算出邻接表中结点i的结点数即可。