第十三周 專案五 拓撲排序

2021-07-25 05:49:25 字數 2560 閱讀 4699

/*  

*檔名稱:graph.cpp

*完成日期:2023年12月8日

*版本號:vc++6.0

* *問題描述: 拓撲排序

*輸入描述:無

*程式輸出:

*/

graph.cpp:

#include #include #include "graph.h"

//功能:由乙個反映圖中頂點鄰接關係的二維陣列,構造出用鄰接矩陣儲存的圖

//引數:arr - 陣列名,由於形式引數為二維陣列時必須給出每行的元素個數,在此將引數arr宣告為一維陣列名(指向int的指標)

// n - 矩陣的階數

// g - 要構造出來的鄰接矩陣資料結構

void arraytomat(int *arr, int n, mgraph &g)

g->e=count;

}void mattolist(mgraph g, algraph *&g)

//將鄰接矩陣g轉換成鄰接表g

g->n=g.n;

g->e=g.e;

}void listtomat(algraph *g,mgraph &g)

//將鄰接表g轉換成鄰接矩陣g

}}void dispmat(mgraph g)

//輸出鄰接矩陣g

printf("\n");}}

graph.h:

#ifndef graph_h_included

#define graph_h_included

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

#define inf 32767 //inf表示∞

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; //圖的鄰接表型別

//功能:由乙個反映圖中頂點鄰接關係的二維陣列,構造出用鄰接矩陣儲存的圖

//引數:arr - 陣列名,由於形式引數為二維陣列時必須給出每行的元素個數,在此將引數arr宣告為一維陣列名(指向int的指標)

// n - 矩陣的階數

// g - 要構造出來的鄰接矩陣資料結構

void arraytomat(int *arr, int n, mgraph &g); //用普通陣列構造圖的鄰接矩陣

void arraytolist(int *arr, int n, algraph *&); //用普通陣列構造圖的鄰接表

void mattolist(mgraph g,algraph *&g);//將鄰接矩陣g轉換成鄰接表g

void listtomat(algraph *g,mgraph &g);//將鄰接表g轉換成鄰接矩陣g

void dispmat(mgraph g);//輸出鄰接矩陣g

void dispadj(algraph *g);//輸出鄰接表g

#endif // graph_h_included

main.cpp:

#include #include #include "graph.h"

void topsort(algraph *g)

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

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

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

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

}int main()

, ,,,

,,};arraytolist(a[0], 7, g);

dispadj(g);

printf("\n");

printf("拓撲序列:");

topsort(g);

printf("\n");

return 0;

}

執行截圖:

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

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

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

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

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

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