09拓撲排序 TopologicalSort

2021-10-10 01:50:22 字數 1844 閱讀 4544

#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...