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

2022-07-05 18:06:11 字數 1947 閱讀 2417

由於**比較簡單,就直接貼出來了

1 #include 2 #include 3 #include 4 #include 5

using

namespace

std;67

8enum

graphtype9;

1516

//結點顏色代表遍歷情況

17enum

colortype18;

2324 template25

class

graph

2634}35

36void

create()

3740

4142

//輸出圖的資訊

43void

display()

4454 cout <

56}5758

//拓撲排序

59void

topologicalsort()

6070

int count = 0;//

輸出結點計數,用於判斷有沒有環

71while (!s.empty())

7286}87

if (count

88 cout << "

圖中存在環!

"<

90private:91

struct

arcnode92;

9798

struct

vertex99;

104105

//最大頂點數

106static

const

int max_vertex_num = 20

;107 vertex m_vertices[max_vertex_num]; //

頂點列表

108int m_vertexnum; //

當前頂點數量

109int m_arcnum; //

當前弧數量

110 graphtype m_type; //

圖型別:有向無權圖、有向帶權圖、無向無權圖、無向無權圖

111112

//結點入度陣列

113int

m_indegreearray[max_vertex_num];

114private

:115

//初始化頂點列表

116void

initvertices()

117125

}126

//插入乙個表結點

127void insert(int headvertex, int

tailvertex, infotype info)

128145 lastnode->next =newnode;

146}

147 ++m_arcnum;

148}

149150

//建立有向無權圖

151void

createdirunweightgraph()

152160

}161

162void

countindegree()

163176 node = node->next;

177}

178}

179}

180}

181};

182183

intmain()

184

測試用的有向圖:

輸出結果:

拓撲排序 C語言 鄰接表

資料結構 typedef struct side 邊 side,slink typedef struct vertex 頂點 vertex,adjlist 20 typedef struct graph 圖 graph,glink 建立 void creategraph glink g printf...

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

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

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

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