拓撲排序 C語言 鄰接表

2021-08-03 03:54:08 字數 892 閱讀 6049

//資料結構

typedef struct side//邊

side,*slink;

typedef struct vertex//頂點

vertex,adjlist[20];

typedef struct graph//圖

graph,*glink;

//建立

void creategraph(glink g)

printf("請輸入邊資訊");

int v1,v2;

for(i=0;itovertex = v2;

s->next = g->adj[v1].first;

g->adj[v1].first = s;

}}

遍歷鄰接表,由於每一條邊指向乙個頂點,所以找到一條邊則為其指向的頂點入度加1。

a為存放入度的陣列,下標與頂點下標對應

void indegree(glink g,int *a)

for(i=0;in;i++)

}}

1、求初始入度

2、將最初入度為0的頂點入隊

3、佇列不為空則迴圈

3.1、出隊乙個頂點,輸出值

3.2、將其所有邊指向的頂點入度減1,若減完後有頂點入度變為0,則入隊

3.3、回到3

//拓撲排序

void tuopu(glink g)

}while(front!=rear)

s = s->next;}}

}

int main()

C 拓撲排序(鄰接矩陣與鄰接表

博主新手,最近在學習拓撲排序,查閱網上資料發現有些難懂且很多方法的 不盡相同,於是就想著試試自己能不能寫出來,經過一段時間的嘗試,最終實現了拓撲排序,現在將自己的想法發表出來,可能有些瑕疵,希望各位看後不吝賜教 不知道是不是就是網上的方法,之前看網上的沒看懂.建立鄰接矩陣,輸入頂點數和邊數,初始化所...

獎金 拓撲排序 佇列 鄰接表做法

題目描述 由於公司在2013年的銷售業務成績優秀,公司總經理心情大好,決定給每位員工發獎金。公司決定以每個人本年在公司的貢獻為標準來計算他們得到獎金的多少。於是總經理下令召開 m 方會談。每位參加會談的代表提出了自己的意見 我認為員工 a 的獎金應該比 b 高!總經理決定要找出一種獎金方案,滿足各位...

基於鄰接表的拓撲排序實現

由於 比較簡單,就直接貼出來了 1 include 2 include 3 include 4 include 5 using namespace std 67 8enum graphtype9 1516 結點顏色代表遍歷情況 17enum colortype18 2324 template25 c...