1つの#include <iostreamの> 2 3 使用して 名前空間STDを、 4 CONST INT MAXNUM = 100 。 5 6のtypedef 構造体srcNode { 7 INT Vemと。 8 構造体 srcNode * 次の; 9 } srcNode。 10 11のtypedef 構造体のvnode { 12の チャーデータ。 13 srcNodeの*のSRC; 14 }のvnode。 15 16のtypedef 構造体GNODE { 17 INT vNum、srcNum。 18 VNODE vNodeList [MAXNUM]。 19 }グラフ、GNODE。 20 21 22 空隙 BFS(グラフ* G){ 23 のint V [MAXNUM * MAXNUM]。 24 int型のフロント= - 1、リア= - 1 。 25個の ブール値[MAXNUM]訪れました。 26 のために(int型 I = 0 ; iは<G-> vNum; ++ i)が{ 27が 訪問[I] = 偽。 28 } 29 V [++リア] = 0; 30 ながら(!リア= 前方){ 31 INT vnow = Vの[++ フロント]。 32 であれば(!訪問[vnow]){ 33 34 COUT << G-> vNodeList [vnow] .DATA << ENDL。 35 [vnow] =訪れ真。 36 srcNode * P = G-> vNodeList [vnow] .SRC。 37 一方、(P){ 38 V [++リア] = P-> Vemと。 39 、P = P-> 次。 40 } 41 42 } 43 // coutの<< "队列中的元素:"; 44 // のための(int型K =フロント+ 1; kは<リア=あり、k ++){ 45 // 。COUT << G-> vNodeList [V [K]データ<<」「。 46 // } 47 // COUT << ENDL。 48 } 49 } 50 51 52 空隙 DFS(グラフ* G){ 53 のintスタック[MAXNUM * MAXNUM]。 54 int型のトップ= - 1 。 55 BOOLが訪問[G-> vNum]。 56 のための(int型I = 0 ; I <G-> vNum。++ I){ 57 [I] =訪問偽。 58 } 59 60 スタック[++トップ] = 0 ; 61 ながら(!トップ= - 1 ){ 62 INT vnow =スタック[top-- ]。 63 であれば(!訪問[vnow]){ 64 COUT << G-> vNodeList [vnow] .DATA << ENDL。 65 [vnow] =訪れた真。 66 srcNode * P = G-> vNodeList [vnow] .SRC。 67 一方、(P){ 68 スタック[++トップ] = P-> Vemと。 69 、P = P-> 次。 70 } 71 } 72 } 73 } 74 75 76グラフ* createGraph(チャー V []、INT SRC [] [ 6 ]、int型N){ 77 グラフ* G = 新しいグラフ()。 78 G-> srcNum = 7 。 79 G-> vNum = 6 。 80 のための(int型 I = 0; 私は、n <; 私は++ ){ 81 G-> vNodeList [I] .DATA = Vの[I]。 82 G-> vNodeList [I] .SRC = NULL; 83 84 のために(INT J = 0 ; J <nであり、j ++ ){ 85 であれば(!SRC [I] [J] = 0 ){ 86 srcNode *はsrcNow = 新しいsrcNode()。 87 srcNow-> Vemと= J; 88 srcNow->次= G-> vNodeList [I] .SRC。 89 G-> vNodeList [I] .SRC = srcNow。 90 } 91 } 92 } 93 リターンG。 94 } 95 96 空隙を表示(グラフ* G){ 97 のために(int型 i = 0 ; I <G-> vNum; iは++ ){ 98 srcNode * P = G-> vNodeList [I] .SRC。 99 一方、(P){ 100 COUT << G-> vNodeList [P-> Vemと】.DATA << " " 。 101 P = P-> 次。 102 } 103 COUT << ENDL。 104 } 105 } 106 107 INT のmain(){ 108 チャー V [] = { ' A '、' B '、' C '、' D '、' E '、' F ' }。 109 INTの SRC [ 6 ] [ 6 ] = { 110 { 0、1、1、0、1、0 }、 111 {1、0、0、0、1、0 }、 112 { 1、0、0、0、0、0 }、 113 { 0、0、0、0、1、1 }、 114 { 1、1、0、1、0、1 }、 115 { 0、0、0、1、1、0 }、 116 }。 117 118 グラフ* G = createGraph(V、SRC、6 )。 119 // ショー(G)。 120 // BFS(G)。 121 DFS(G)。 122 }