8.4 夕議銭宥來!伏撹峯才伏撹畢爽
壓宸匯弌准戦?厘断繍公竃宥狛斤夕議演煽?誼欺夕議伏撹峯賜伏撹畢爽議麻隈。
譜E(G)葎銭宥夕G 嶄侭嗤円議鹿栽?夸貫夕嶄販匯競泣竃窟演煽夕扮?駅協繍E(G)蛍撹曾倖鹿栽T(G)才B(G)?凪嶄T(G)頁演煽夕狛殻嶄煽将議円議鹿栽?B(G)頁複噫議円議鹿栽。?堡撮?T(G)才夕G 嶄侭嗤競泣匯軟更撹銭宥夕G 議自弌銭宥徨夕。梓孚8.1.2 准議協吶?万頁銭宥夕議匯臣伏撹峯?旺拝喇侮業單枠朴沫誼欺議葎侮業單枠伏撹峯?喇鴻業單枠朴沫誼欺議葎鴻業單枠伏撹峯。箭泌?夕8.17(a)才(b)侭幣蛍艶葎銭宥夕G5 議侮業單枠伏撹峯才鴻業單枠伏撹峯。夕嶄倡?葎鹿栽B(G) 嶄議円?糞?葎鹿栽T(G)嶄議円。
斤噐掲銭宥夕?宥狛宸劔議演煽?繍誼欺議頁伏撹畢爽。箭泌?夕8.20 (b) 侭幣葎夕8.20 (a)議侮業單枠伏撹畢爽?万喇眉臣侮業單枠伏撹峯怏撹。
邪譜參頃徨儘宮全燕恬伏撹畢爽議贋刈潤更?夸麻隈8.10 伏撹掲銭宥夕議侮業單枠伏撹畢爽?凪嶄DFSTree 痕方泌麻隈8.11 侭幣。?堡撮k齋?8.10 議扮寂鹸墫業才演煽屢揖。
void DESForest(Graph G, CSTree *T)
{ /*秀羨涙?夕G 議侮業單枠伏撹畢爽議頃徨儘宮全燕T*/
T=NULL;
for (v=0;v<G.vexnum;++v)
if (!visited[v]=FALSE;
for(v=0;v<G.vexnum;++v)
if (!visited[v]) /*競泣v 葎仟議伏撹峯議功潤泣*/
{ p=(CSTree)malloc(sixeof(CSNode)); /*蛍塘功潤泣*/
p={GetVex(G,v).NULL,NULL}; /*公功潤泣験峙*/
if (!T)
(*T)=p; /*T 頁及匯臣伏撹峯議功*/
else q->nextsibling=p; /*念匯臣議功議儘宮頁凪万伏撹峯議功*/
q=p; /*q 峺幣輝念伏撹峯議功*/
DFSTree(G,v,&p); /*秀羨參p 葎功議伏撹峯*/
}
}
麻隈8.10
void DFSTree(Graph G,int v ,CSTree *T)
{/*貫及v 倖競泣竃窟侮業單枠演煽夕G?秀羨參*T 葎功議伏撹峯*/
visited[v]=TRUE;
first=TRUE;
for(w=FirstAdjVex(G,v); w; w=NextAdjVex(G,v,w))
if(!visited[w])
{ p=(CSTree)malloc(sizeof)CSNode)); /*蛍塘頃徨潤泣*/
*p={GetVex(G,w),NULL,NULL};
if (first) /*w 頁v 議及匯倖隆瓜恵諒議惣俊競泣?恬葎功議恣頃徨潤泣*/
{ T->lchild=p;
first=FALSE;
}
else { /*w 頁v 議凪万隆瓜恵諒議惣俊競泣?恬葎貧匯惣俊競泣議嘔儘宮*/
q->nextsibling=p;
}
q=p;
DFSTree(G,w,&q); /*貫及w 倖競泣竃窟侮業單枠演煽夕G?秀羨伏撹徨峯*q*/
}
}
麻隈8.11
譜E(G)葎銭宥夕G 嶄侭嗤円議鹿栽?夸貫夕嶄販匯競泣竃窟演煽夕扮?駅協繍E(G)蛍撹曾倖鹿栽T(G)才B(G)?凪嶄T(G)頁演煽夕狛殻嶄煽将議円議鹿栽?B(G)頁複噫議円議鹿栽。?堡撮?T(G)才夕G 嶄侭嗤競泣匯軟更撹銭宥夕G 議自弌銭宥徨夕。梓孚8.1.2 准議協吶?万頁銭宥夕議匯臣伏撹峯?旺拝喇侮業單枠朴沫誼欺議葎侮業單枠伏撹峯?喇鴻業單枠朴沫誼欺議葎鴻業單枠伏撹峯。箭泌?夕8.17(a)才(b)侭幣蛍艶葎銭宥夕G5 議侮業單枠伏撹峯才鴻業單枠伏撹峯。夕嶄倡?葎鹿栽B(G) 嶄議円?糞?葎鹿栽T(G)嶄議円。
斤噐掲銭宥夕?宥狛宸劔議演煽?繍誼欺議頁伏撹畢爽。箭泌?夕8.20 (b) 侭幣葎夕8.20 (a)議侮業單枠伏撹畢爽?万喇眉臣侮業單枠伏撹峯怏撹。
邪譜參頃徨儘宮全燕恬伏撹畢爽議贋刈潤更?夸麻隈8.10 伏撹掲銭宥夕議侮業單枠伏撹畢爽?凪嶄DFSTree 痕方泌麻隈8.11 侭幣。?堡撮k齋?8.10 議扮寂鹸墫業才演煽屢揖。
void DESForest(Graph G, CSTree *T)
{ /*秀羨涙?夕G 議侮業單枠伏撹畢爽議頃徨儘宮全燕T*/
T=NULL;
for (v=0;v<G.vexnum;++v)
if (!visited[v]=FALSE;
for(v=0;v<G.vexnum;++v)
if (!visited[v]) /*競泣v 葎仟議伏撹峯議功潤泣*/
{ p=(CSTree)malloc(sixeof(CSNode)); /*蛍塘功潤泣*/
p={GetVex(G,v).NULL,NULL}; /*公功潤泣験峙*/
if (!T)
(*T)=p; /*T 頁及匯臣伏撹峯議功*/
else q->nextsibling=p; /*念匯臣議功議儘宮頁凪万伏撹峯議功*/
q=p; /*q 峺幣輝念伏撹峯議功*/
DFSTree(G,v,&p); /*秀羨參p 葎功議伏撹峯*/
}
}
麻隈8.10
void DFSTree(Graph G,int v ,CSTree *T)
{/*貫及v 倖競泣竃窟侮業單枠演煽夕G?秀羨參*T 葎功議伏撹峯*/
visited[v]=TRUE;
first=TRUE;
for(w=FirstAdjVex(G,v); w; w=NextAdjVex(G,v,w))
if(!visited[w])
{ p=(CSTree)malloc(sizeof)CSNode)); /*蛍塘頃徨潤泣*/
*p={GetVex(G,w),NULL,NULL};
if (first) /*w 頁v 議及匯倖隆瓜恵諒議惣俊競泣?恬葎功議恣頃徨潤泣*/
{ T->lchild=p;
first=FALSE;
}
else { /*w 頁v 議凪万隆瓜恵諒議惣俊競泣?恬葎貧匯惣俊競泣議嘔儘宮*/
q->nextsibling=p;
}
q=p;
DFSTree(G,w,&q); /*貫及w 倖競泣竃窟侮業單枠演煽夕G?秀羨伏撹徨峯*q*/
}
}
麻隈8.11