第十三周 專案五 驗證拓撲排序

2021-07-25 02:07:18 字數 1927 閱讀 8659

/*問題及**  

*all right reserved.

*檔名稱:拓撲排序演算法驗證.cpp

*版本號;v1.0

*問題描述:

拓撲排序演算法驗證

*輸入描述:圖的鄰接矩陣

*程式輸出:圖的鄰接表以及其拓撲序列

/

**:

#include #include #define maxv 100                //最大頂點個數  

#define inf 32767 //inf表示∞

#define maxsize 100

typedef int infotype;

//以下定義鄰接矩陣型別

typedef struct

vertextype; //頂點型別

typedef struct //圖的定義

mgraph; //圖的鄰接矩陣型別

//以下定義鄰接表型別

typedef struct anode //弧的結點結構型別

arcnode;

typedef int vertex;

typedef struct vnode //鄰接表頭結點的型別

vnode;

typedef vnode adjlist[maxv]; //adjlist是鄰接表型別

typedef struct

algraph; //圖的鄰接表型別

typedef struct

edge;

void arraytolist(int *arr, int n, algraph *&g);

void topsort(algraph *g);

void dispadj(algraph *g);

void arraytolist(int *arr, int n, algraph *&g)

g->e=count;

} void topsort(algraph *g)

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

if (g->adjlist[i].count==0) //入度為0的頂點進棧

while (top>-1) //棧不為空時迴圈

p=p->nextarc; //找下乙個相鄰頂點

} }

} void dispadj(algraph *g)

//輸出鄰接表g

printf("\n");

} } int main()

, ,

, ,

, ,

,, ,

, };

arraytolist(a[0], 10, g);

dispadj(g);

printf("\n");

printf("拓撲序列:");

topsort(g);

printf("\n");

return 0;

}

執行結果:

知識點總結:

拓撲排序演算法,如果邊是圖的邊即從頂點vi到頂點vj有一條路徑,則在序列中頂點vi必須排在頂點vj的前面。

心得體會:

感覺理解並掌握了此演算法。

第十三周專案五 拓撲排序演算法驗證

問題及 all right reserved.檔名稱 拓撲排序演算法驗證.cpp 版本號 v1.0 問題描述 拓撲排序演算法驗證 輸入描述 圖的鄰接矩陣 程式輸出 圖的鄰接表以及其拓撲序列 include include define maxv 100 最大頂點個數 define inf 32767...

第十三周 專案五 拓撲排序

檔名稱 graph.cpp 完成日期 2016年12月8日 版本號 vc 6.0 問題描述 拓撲排序 輸入描述 無 程式輸出 graph.cpp include include include graph.h 功能 由乙個反映圖中頂點鄰接關係的二維陣列,構造出用鄰接矩陣儲存的圖 引數 arr 陣列名...

第十三周專案五 拓撲排序演算法的驗證

檔名稱 專案5.cbp 作 者 孫立立 完成日期 2015年12月14日 版 本 號 v1.0 問題描述 拓撲排序演算法的驗證 輸入描述 無 程式輸出 測試資料 標頭檔案及功能函式詳見 圖演算法庫 include graph.h void topsort algraph g for i 0 in i...