#include
#include
#define ok 1
#define error 0
#define true 1
#define false 0
#define maxedge 20
#define maxvex 14
#define infinity 65535
typedef
int status;
/* status是函式的型別,其值是函式結果狀態**,如ok等 */
/* 鄰接矩陣結構 */
typedef
struct
mgraph;
/* 鄰接表結構****************** */
typedef
struct edgenode /* 邊表結點 */
edgenode;
typedef
struct vertexnode /* 頂點表結點 */
vertexnode, adjlist[maxvex]
;typedef
struct
graphadjlist,
*graphadjlist;
/* **************************** */
void
createmgraph
(mgraph *g)
/* 構件圖 */
for(i =
0; i < g->numvertexes; i++
)/* 初始化圖 */
} g->arc[0]
[4]=
1;g->arc[0]
[5]=
1; g->arc[0]
[11]=
1; g->arc[1]
[2]=
1; g->arc[1]
[4]=
1; g->arc[1]
[8]=
1; g->arc[2]
[5]=
1; g->arc[2]
[6]=
1;g->arc[2]
[9]=
1;g->arc[3]
[2]=
1; g->arc[3]
[13]=
1;g->arc[4]
[7]=
1;g->arc[5]
[8]=
1;g->arc[5]
[12]=
1; g->arc[6]
[5]=
1; g->arc[8]
[7]=
1;g->arc[9]
[10]=
1;g->arc[9]
[11]=
1;g->arc[10]
[13]=
1;g->arc[12]
[9]=
1;}/* 利用鄰接矩陣構建鄰接表 */
void
createalgraph
(mgraph g,graphadjlist *gl)
for(i=
0;i)/* 建立邊表 */}}
}/* 拓撲排序,若gl無迴路,則輸出拓撲排序序列並返回1,若有迴路返回0。 */
status topologicalsort
(graphadjlist gl)
}printf
("\n");
if(count < gl->numvertexes)
return error;
else
return ok;
}int
main
(void
)
python 拓撲排序 Python 拓撲排序
python 拓撲排序 在圖論中,由乙個有向無環圖的頂點組成的序列,當且僅當滿足下列條件時,稱為該圖的乙個拓撲排序 英語 topological sorting 每個頂點出現且只出現一次 若a在序列中排在b的前面,則在圖中不存在從b到a的路徑。print 拓撲排序結果 g.topologicalso...
python 排序 拓撲排序
在電腦科學領域中,有向圖的拓撲排序是其頂點的先行排序,對於每個從頂點u到頂點v的有向邊uv,在排序的結果中u都在v之前。如果圖是有向無環圖,則拓撲排序是可能的 為什麼不說一定呢?圖論 是組合數學的乙個分支,它和其他分支比如 群論 拓撲學 矩陣論有著密切的關係。圖是圖論的主要研究物件。圖是由若干給定的...
拓撲排序演算法
對許多資料結構教材實在不滿意,至少我是看不懂 至於拓撲排序演算法,教材上那些偽 真真教人頭暈。只寫了幾個struct結構,我根本看不出這是鄰接表。如果給出乙個清晰明了的圖,一切不就簡單了?總之,關鍵就是建立乙個鄰接表。然後利用這個表進行拓撲排序。邊表結點宣告 typedef struct edgen...