資料結構之拓撲排序

2022-09-06 10:57:22 字數 1771 閱讀 2084

演算法解析(內容來自

《大話資料結構》

這本書不錯哦):

**如下:

1 #include "

stdafx.h

"2 #include3 #include

4using

namespace

std;

5#define maxsize 100

6#define error 0

7#define ok 1

8#define infinity 65535

9 typedef int

status;

10 typedef struct arcnode //

邊表結點

11arcnode;

15 typedef struct vnode //

頂點表結點

16vnode, adjlist[maxsize]; //

adlist表示鄰接表型別

21 typedef struct

//鄰接表

22algraph;

2627 typedef struct

28amgraph;

3334

void createudn(amgraph &g) //

採用鄰接矩陣表示法,建立無向網&g

3544

for (i = 0; i < g.vexnum; i++) //

初始化鄰接矩陣,編的權值均為極大值maxint

45for (j = 0; j < g.vexnum; j++)

46 g.arcs[i][j] = 0

;47 cout << "

請輸入邊的資訊(輸入順序:連線點1編號,連線點2編號):

"<

48for (int k = 0; k < g.arcnum; k++) //

構造鄰接矩陣

4953}54

55void createalgraph(amgraph g, algraph &gl)

5667

68for (i = 0; i//

建立邊表

6980}81

}82}83

84status topologicalsort(algraph gl)

85106

}107 cout <

108if (count

109return

error;

110else

111return

ok;112

}113

114int

main()

115

示例結果(就是上面那幾張的示例):

資料結構之拓撲排序

乙個簡單的求拓撲排序思路是 先找出任意乙個沒有入邊的頂點。然後列印出該頂點,並將它和它的邊一起從圖中刪除。然後,我們對圖的其餘部分採用同樣的方法處理。相應的我們可以定義乙個indegree 入度陣列 儲存所有頂點的入度。具體實現如下 鄰接表 define crt secure no warnings...

資料結構之拓撲排序

拓撲排序 topological order 是指,將乙個有向無環圖 directed acyclic graph簡稱dag 進行排序進而得到乙個有序的線性序列。這樣說,可能理解起來比較抽象。下面通過簡單的例子進行說明!例如,乙個專案包括a b c d四個子部分來完成,並且a依賴於b和d,c依賴於d...

資料結構之拓撲排序

感覺重點就是鄰接表的建立和tp toposort 函式中的乙個變數 的變化很奇妙,相當於是乙個靜態指標的用法。include include include include include include include include include define inf 0x3f3f3f3f d...