日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【最详细】数据结构(C语言版 第2版)第六章课后习题答案 严蔚敏 等 编著

發布時間:2024/2/28 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【最详细】数据结构(C语言版 第2版)第六章课后习题答案 严蔚敏 等 编著 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

所有章節答案合集——>傳送門


1.選擇題
( 1)在一個圖中,所有頂點的度數之和等于圖的邊數的()倍。
A. 1/2 B. 1 C. 2 D. 4
答案: C

( 2)在一個有向圖中,所有頂點的入度之和等于所有頂點的出度之和的()倍。
A. 1/2 B. 1 C. 2 D. 4
答案: B
解釋:有向圖所有頂點入度之和等于所有頂點出度之和。

( 3)具有 n 個頂點的有向圖最多有()條邊。
A. n B . n(n-1) C. n(n+1) D . n2
答案: B
解釋:有向圖的邊有方向之分, 即為從 n 個頂點中選取 2 個頂點有序排列, 結果為 n(n-1) 。 ( 4) n 個頂點的連通圖用鄰接距陣表示時,該距陣至少有 () 個非零元素。
A. n
B . 2(n-1)
C. n/2
D . n2
答案: B

( 5) G 是一個非連通無向圖,共有 28 條邊,則該圖至少有()個頂點。
A. 7 B . 8 C. 9 D . 10
答案: C
解釋: 8 個頂點的無向圖最多有 8*7/2=28 條邊,再添加一個點即構成非連通無向圖,故
至少有 9 個頂點。

( 6)若從無向圖的任意一個頂點出發進行一次深度優先搜索可以訪問圖中所有的頂點,
則該圖一定是()圖。
A.非連通 B .連通 C.強連通 D .有向
答案: B
解釋:即從該無向圖任意一個頂點出發有到各個頂點的路徑, 所以該無向圖是連通圖。

( 7)下面( )算法適合構造一個稠密圖 G 的最小生成樹。
A. Prim 算法 B . Kruskal 算法 C. Floyd 算法 D. Dijkstra 算法
答案: A
解釋: Prim 算法適合構造一個稠密圖 G 的最小生成樹, Kruskal 算法適合構造一個稀疏
圖 G 的最小生成樹。

( 8)用鄰接表表示圖進行廣度優先遍歷時,通常借助()來實現算法。
A.棧 B. 隊列 C. 樹 D .圖
答案: B
解釋:廣度優先遍歷通常借助隊列來實現算法,深度優先遍歷通常借助棧來實現算法。

( 9)用鄰接表表示圖進行深度優先遍歷時,通常借助()來實現算法。
A.棧 B. 隊列 C. 樹 D .圖
答案: A
解釋:廣度優先遍歷通常借助隊列來實現算法,深度優先遍歷通常借助棧來實現算法。

( 10)深度優先遍歷類似于二叉樹的() 。 A.先序遍歷 B.中序遍歷 C.后序遍歷 D.層次遍歷
答案: A

( 11)廣度優先遍歷類似于二叉樹的() 。 A.先序遍歷 B .中序遍歷 C.后序遍歷 D.層次遍歷
答案: D

( 12)圖的 BFS 生成樹的樹高比 DFS 生成樹的樹高() 。 A.小 B.相等 C.小或相等 D.大或相等
答案: C
解釋:對于一些特殊的圖,比如只有一個頂點的圖,其 BFS 生成樹的樹高和 DFS 生
成樹的樹高相等。一般的圖,根據圖的 BFS 生成樹和 DFS 樹的算法思想, BFS 生成樹的樹
高比 DFS 生成樹的樹高小。

( 13)已知圖的鄰接矩陣如圖 6.30 所示, 則從頂點 v0 出發按深度優先遍歷的結果是 ()。 圖 6.30 鄰接矩陣

( 14)已知圖的鄰接表如圖 6.31 所示,則從頂點 v0 出發按廣度優先遍歷的結果是()

A . 0 1 3 2 B. 0 2 3 1 C. 0 3 2 1 D . 0 1 2 3
答案: D

( 15)下面()方法可以判斷出一個有向圖是否有環。
A.深度優先遍歷 B.拓撲排序 C.求最短路徑 D .求關鍵路徑
答案: B


2.應用題

( 1)已知圖 6.32 所示的有向圖,請給出:
①每個頂點的入度和出度;
②鄰接矩陣;
③鄰接表;
④逆鄰接表。

答案:


( 2)已知如圖 6.33 所示的無向網,請給出:
①鄰接矩陣;
②鄰接表;
③最小生成樹
答案:


( 3)已知圖的鄰接矩陣如圖 6.34 所示。試分別畫出自頂點 1 出發進行遍歷所得的深度優先生成樹和廣度優先生成樹 。

答案:


( 4)有向網如圖 6.35 所示,試用
迪 杰 斯 特 拉 算 法 求 出 從 頂 點 a 到其 他
各頂點間的最短路徑,完成表6-9

答案:


( 5)試對圖 6.36 所示的 AOE- 網:
① 求 這 個 工 程 最早 可 能 在 什么 時
間結束;
②求每個活動的最早開始時間和最
遲開始時間;
③確定哪些活動是關鍵活動

答案:按拓撲有序的順序計算各個頂點的最早可能開始時間 Ve 和最遲允許開始時間 Vl 。
然后再計算各個活動的最早可能開始時間 e 和最遲允許開始時間 l ,根據 l-e = 0? 來確定關鍵
活動,從而確定關鍵路徑


3.算法設計題

( 1)分別以鄰接矩陣和鄰接表作為存儲結構,實現以下圖的基本操作:
①增加一個新頂點 v, InsertVex(G, v) ;
②刪除頂點 v 及其相關的邊, DeleteVex(G , v);
③增加一條邊 <v , w>, InsertArc(G , v, w);
④刪除一條邊 <v , w>, DeleteArc(G , v, w)
[ 算法描述 ]
假設圖 G 為有向無權圖,以鄰接矩陣作為存儲結構四個算法分別如下:
①增加一個新頂點 v

Status Insert_Vex(MGraph &G, char v)// 在鄰接矩陣表示的圖 G 上插入頂點 v { if(G.vexnum+1)>MAX_VERTEX_NUM return INFEASIBLE; G.vexs[++G.vexnum]=v; return OK; }//Insert_Vex ②刪除頂點 v 及其相關的邊,Status Delete_Vex(MGraph &G,char v)// 在鄰接矩陣表示的圖 G 上刪除頂點 v { n=G.vexnum; if((m=LocateVex(G,v))<0) return ERROR; G.vexs[m]<->G.vexs[n]; // 將待刪除頂點交換到最后一個頂點for(i=0;i<n;i++) { G.arcs[m]=G.arcs[n]; G.arcs[m]=G.arcs[n]; // 將邊的關系隨之交換} G.arcs[m][m].adj=0; G.vexnum--; return OK; }//Delete_Vex

分析 :如果不把待刪除頂點交換到最后一個頂點的話 ,算法將會比較復雜 ,而伴隨著大量元
素的移動 ,時間復雜度也會大大增加。
③增加一條邊 <v , w>

Status Insert_Arc(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(i==j) return ERROR; if(!G.arcs[j].adj) { G.arcs[j].adj=1; G.arcnum++; } return OK; }//Insert_Arc

④刪除一條邊 <v , w>

Status Delete_Arc(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[j].adj) { G.arcs[j].adj=0; G.arcnum--; } return OK; }//Delete_Arc

以鄰接表作為存儲結構,本題只給出 Insert_Arc 算法 .其余算法類似。

Status Insert_Arc(ALGraph &G,char v,char w)// 在鄰接表表示的圖 G 上插入邊 (v,w) { if((i=LocateVex(G,v))<0) return ERROR; if((j=LocateVex(G,w))<0) return ERROR; p=new ArcNode; p->adjvex=j;p->nextarc=NULL; if(!G.vertices.firstarc) G.vertices.firstarc=p; else { for(q=G.vertices.firstarc;q->q->nextarc;q=q->nextarc) if(q->adjvex==j) return ERROR; // 邊已經存在q->nextarc=p; } G.arcnum++; return OK; }//Insert_Arc

( 2)一個連通圖采用鄰接表作為存儲結構,設計一個算法,實現從頂點 v 出發的深度優
先遍歷的非遞歸過程。
[算法描述 ]

Void DFSn(Graph G,int v) { // 從第 v 個頂點出發非遞歸實現深度優先遍歷圖 G Stack s; SetEmpty(s); Push(s,v); While(!StackEmpty(s)) { //??諘r第 v 個頂點所在的連通分量已遍歷完Pop(s,k); if(!visited[k]) {visited[k]=TRUE; VisitFunc(k); // 訪問第 k 個頂點// 將第 k 個頂點的所有鄰接點進棧for(w=FirstAdjVex(G,k);w;w=NextAdjVex(G,k,w)) { if(!visited[w]&&w!=GetTop(s)) Push(s,w); // 圖中有環時 w==GetTop(s) } }} }

( 3)設計一個算法,求圖 G 中距離頂點 v 的最短路徑長度最大的一個頂點,設 v 可達
其余各個頂點。
[題目分析 ]
利用 Dijkstra 算法求 v0 到其它所有頂點的最短路徑,分別保存在數組 D[i] 中,然后求出
D[i] 中值最大的數組下標 m 即可。
[算法描述 ]

int ShortestPath _ MAX(AMGraph G,int v0){ //用 Dijkstra 算法求距離頂點 v0 的最短路徑長度最大的一個頂點 m n=G.vexnum; //n 為 G 中頂點的個數for(v = 0; v<n;++v){ //n 個頂點依次初始化S[v] = false; //S 初始為空集D[v] = G.arcs[v0][v]; //將 v0 到各個終點的最短路徑長度初始化if(D[v]< MaxInt) Path [v]=v0; // 如果 v0 和 v 之間有弧,則將 v 的前驅置為 v0 else Path [v]=-1; //如果 v0 和 v 之間無弧,則將 v 的前驅置為 -1 }//for S[v0]=true; //將 v0 加入 S D[v0]=0; // 源點到源點的距離為 0 /* 開始主循環,每次求得 v0 到某個頂點 v 的最短路徑,將 v 加到 S 集 */ for(i=1;i<n; ++i){ //對其余 n- 1 個頂點,依次進行計算min= MaxInt; for(w=0;w<n; ++w) if(!S[w]&&D[w]<min) {v=w; min=D[w];} //選擇一條當前的最短路徑,終點為 v S[v]=true; //將 v 加入 S for(w=0;w<n; ++w) // 更新從 v0 到 V- S 上所有頂點的最短路徑長度if(!S[w]&&(D[v]+G.arcs[v][w]<D[w])){ D[w]=D[v]+G.arcs[v][w]; //更新 D[w] Path [w]=v; //更改 w 的前驅為 v }//if }//for /* 最短路徑求解完畢,設距離頂點 v0 的最短路徑長度最大的一個頂點為 m */ Max=D[0]; m=0; for(i=1;i<n;i++) if(Max<D[i]) m=i; return m; }

( 4)試基于圖的深度優先搜索策略寫一算法, 判別以鄰接表方式存儲的有向圖中是否存
在由頂點 v i 到頂點 v j 的路徑( i≠ j )。 [題目分析 ]
引入一變量 level 來控制遞歸進行的層數
[算法描述 ]

int visited[MAXSIZE]; // 指示頂點是否在當前路徑上 int level = 1;// 遞歸進行的層數 int exist_path_DFS(ALGraph G,int i,int j)// 深度優先判斷有向圖 G 中頂點 i 到頂點 j 是否有路徑 ,是則返回 1,否則返回 0 { if(i==j) return 1; //i 就是 j else { visited[i]=1; for(p=G.vertices[i].firstarc;p;p=p->nextarc , level--) {level++; k=p->adjvex; if(!visited[k]&&exist_path(k,j)) return 1;//i 下游的頂點到 j 有路徑}//for }//else if (level==1) return 0; }//exist_path_DFS

( 5)采用鄰接表存儲結構,編寫一個算法,判別無向圖中任意給定的兩個頂點之間是否
存在一條長度為為 k 的簡單路徑。
[算法描述 ]

int visited[MAXSIZE]; int exist_path_len(ALGraph G,int i,int j,int k) //判斷鄰接表方式存儲的有向圖 G 的頂點 i 到 j 是否存在長度為 k 的簡單路徑 {if(i==j&&k==0) return 1; // 找到了一條路徑 ,且長度符合要求else if(k>0) {visited[i]=1; for(p=G.vertices[i].firstarc;p;p=p->nextarc) {l=p->adjvex; if(!visited[l]) if(exist_path_len(G,l,j,k-1)) return 1; // 剩余路徑長度減一}//for visited[i]=0; // 本題允許曾經被訪問過的結點出現在另一條路徑中}//else return 0; // 沒找到 }//exist_path_len

如果這篇博客對你產生了幫助,還請給給它點個贊哦~,讓更多的人看到它。

總結

以上是生活随笔為你收集整理的【最详细】数据结构(C语言版 第2版)第六章课后习题答案 严蔚敏 等 编著的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久久久人妻一区 | 一区二区国产电影 | 国产精品第一区 | 欧美成人片在线 | 小辣椒导航 | 国产精品毛片久久久 | 天堂在线资源库 | 99国产超薄肉色丝袜交足 | 白丝开裆喷水 | 亚洲风情av | 麻豆影视免费观看 | 香蕉视频首页 | 成人免费毛片东京热 | 一本久久道 | 在线成人免费视频 | 一级大片黄色 | 亚洲熟女一区二区 | 久久性感视频 | 肉嫁高柳在线 | 欧美一区精品 | www日韩在线观看 | 天天干天天爽 | 美女乱淫 | 午夜家庭影院 | 久久韩国 | 中文字幕 日韩有码 | 日韩伦理一区二区三区 | 日本欧美不卡 | 精品96久久久久久中文字幕无 | 中文字幕高清视频 | 日本视频网站在线观看 | 精品亚洲一区二区 | 亚洲高清视频在线观看 | 黄色片网站国产 | 日韩欧美国产精品综合嫩v 国产小毛片 | 国产一区二区影院 | 玉女心经 在线 | 亚洲图片自拍偷拍区 | 欧美色欧美色 | 久久午夜影视 | 欧洲一区在线观看 | 99热国产在线 | 中文毛片无遮挡高潮免费 | 午夜寂寞影院在线观看 | 神马三级我不卡 | 福利视频一区二区 | 午夜宫 | 波多野结衣免费视频观看 | 污污免费在线观看 | xxx日韩 | 国产精品一区二区三区在线播放 | 精品中文一区二区三区 | 狠狠人妻久久久久久综合蜜桃 | 在线天堂中文字幕 | 日韩大胆视频 | 亚洲区 欧美区 | 午夜999| av鲁丝一区鲁丝二区鲁丝三区 | av在线黄色 | 久草欧美视频 | 96av在线视频 | 成人黄色网址在线观看 | 亚洲va欧美va天堂v国产综合 | 牛牛电影国产一区二区 | 97人妻精品一区二区三区免 | 日本十八禁视频无遮挡 | 日本视频在线播放 | 亚洲色图一区二区 | 久久免费的精品国产v∧ | 男人插入女人下面视频 | 黄色成人在线播放 | 国产女人高潮时对白 | 欧美国产精品一二三 | 张柏芝亚洲一区二区三区 | 亚洲天堂社区 | 男人私人影院 | 在线视频一区二区 | 91看片视频| 你懂的亚洲 | 国产精品天天av精麻传媒 | 欧美亚洲大片 | 亚洲第一区av | 免费av地址 | 好吊色这里只有精品 | 中文字幕乱伦视频 | 91精品国产综合久久久久久 | 免费a v视频| 在线免费观看国产视频 | 亚洲一区二区三区无码久久 | 无码人妻一区二区三区免费n鬼沢 | 狠狠的日 | 日韩在线高清视频 | 日本少妇电影 | 男女啪啪网站 | 疯狂伦交 | 国产成人av一区二区三区不卡 | 国产亚洲91 | 强迫凌虐淫辱の牝奴在线观看 | av中文在线|