簡單拓撲排序演算法C語言,簡單拓撲排序演算法C語言

2021-07-12 17:38:46 字數 1936 閱讀 1019

1樓:麗舞傾心

#include

#include

#define ture 1

#define false 0

//圖相關----------------------

typedef int arccell; /*對於無權圖,用1或0表示是否相鄰;對帶權圖,則為權值型別*/

typedef int booleantype; //狀態變數

typedef struct

mgraph; /*(adjacency matrix graph)*/

//-----------------------------

mgraph g; //圖

booleantype *visited; //建立標誌陣列(全域性量)

int getgraph(mgraph *g); //建立鄰接矩陣

int searchnoen(mgraph *g); //尋找沒有入度的結點。如果沒有,返回-1,否則返回其位置

booleantype iscircle(mgraph *g); //判斷是否有環。有則返回1,無返回0

int main()

else

return 0;

}int getgraph(mgraph *g) //建立鄰接矩陣

//建立二維動態陣列

for(i = 0; i < g->vexnum; i++)

} //輸入資料

visited = (booleantype*)malloc(sizeof(booleantype) * g->vexnum); //分配標誌陣列

for(v = 0; v < g->vexnum; v++) //初始化

return 0;

}//getgraph

int searchnoen(mgraph *g) //尋找沒有入度的結點。如果沒有,返回-1,否則返回其位置

if(visited[i] != ture && j == g->vexnum - 1)}}

return -1;

}booleantype iscircle(mgraph *g) //判斷是否有環。有則返回1,無返回0

visited[i] = ture;

count--;

}if(count != 0)

return 0;}

2樓:

#include

#include

#include

using namespace std;

// description: 表示圖的結點的鄰接邊

struct edge

**graph;

// description: 新增一個邊

// input: e - 要新增邊的結點, p - 目的地

// output: e - 新增邊後的結點

void addedge(edge *&e, int p)

else

// description: 輸入結點之間的邊

// input: console下使用者輸入,起點和終點; m - 邊的個數

// output: graph - 圖;

void input(int &m)

// description: 獲得每個結點的入度

// input: n - 結點的個數

// output: degree - 每個結點的入度

void getdegree(int *degree, int n)}}

// description: 拓撲排序

// input: n - 結點個數

// output: console下輸出一個正確的拓撲序

void toposort(int n)

}delete degree;

}int main()

C語言簡單排序的問題,求資料結構c語言大神

這程式有一個錯誤和一個警告。錯誤 函式selectsort的定義函式體中,內迴圈for j i 1 j l length i 出錯,應將i改為j 警告 陣列下標最好從0開始 1.養成習慣2.函式selectsort的排列可以在函式內再定義個datetype t 作為交換,而不是用個全域性變數.因為你...

C語言很簡單很簡單的問題,C語言很簡單很簡單的問題

第一個 經過呼叫函式的運算後 沒有返回值 所以c d的值沒變 第二個用不到呼叫函式吧 因為計算機是讀 main的 而且是從main之前找函式 後面的函式 計算機不會讀的 應該輸出10 可能不對 我好久沒玩 c語言了 1.要用指標 改為int t int x,int y,int cp,int dp c...

簡單c語言問題求答,簡單c語言問題求解答。

你把 發上來,才能幫你看,幫你找錯誤吧。一個很簡單的c語言問題,求高手解答,謝謝!scanf 分數 d n score 是錯的,這樣會導致你無法輸入任何資料。不信你可以先給score賦一個初值,然後 printf d score 就會發現score永遠是初值。應該寫成scanf d score 如果...