![拓撲排序代碼C語言_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/7/f219bdaf-1150-4e4f-af95-e9ef946d18f8/f219bdaf-1150-4e4f-af95-e9ef946d18f81.gif)
![拓撲排序代碼C語言_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/7/f219bdaf-1150-4e4f-af95-e9ef946d18f8/f219bdaf-1150-4e4f-af95-e9ef946d18f82.gif)
![拓撲排序代碼C語言_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/7/f219bdaf-1150-4e4f-af95-e9ef946d18f8/f219bdaf-1150-4e4f-af95-e9ef946d18f83.gif)
![拓撲排序代碼C語言_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/7/f219bdaf-1150-4e4f-af95-e9ef946d18f8/f219bdaf-1150-4e4f-af95-e9ef946d18f84.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、/* 用鄰接表表示圖的拓撲排序算法 */#include#include#define MAXVEX 100#define TRUE 1#define FALSE 0typedef struct EdgeNode EdgeNode;typedef struct EdgeNode * PEdgeNode;typedef struct EdgeNode * EdgeList;struct EdgeNodeint endvex; /* 相鄰頂點字段 */ PEdgeNode nextedge; /* 鏈字段 */; /* 邊表中的結(jié)點 */typedef struct/*VexType vertex
2、;*/ EdgeList edgelist; VexNode;typedef structint n;/*/*/* 頂點信息 */ 邊表頭指針 */ 頂點表中的結(jié)點 */*VexNode vexsMAXVEX;圖的頂點個數(shù) */ GraphList;typedef struct/* 頂點在頂點表中的下標值 */int vexsnoMAXVEX;/*VexType vexsMAXVEX;*/ /* 頂點信息 */ Topo;/* 求出圖中所有頂點的入度 */ /* 方法是搜索整個鄰接表 */ void findInDegree(GraphList* g, int *inDegree) int i
3、; PEdgeNode p;for (i = 0; i n; i+)inDegreei = 0;for (i = 0; i n; i+)p = g-vexsi.edgelist;while (p)+inDegreep-endvex; p = p-nextedge;int topoSort(GraphList * paov, Topo * ptopo)EdgeList p;int i, j,k, nodeno = 0, top = -1;int indegreeMAXVEX;findInDegree(paov, indegree); /* 求出圖中所有頂點的入度 */ for (i = 0; i
4、 n; i+)if (indegreei = 0) /* 將入度為零的頂點入棧 */ indegreei = top;top = i;while (top != -1) /* 棧不為空 */j = top;top = indegreetop;/* 取出當前棧頂元素 */ptopo-vexsnonodeno+ = j;p = paov-vexsj.edgelist;/* 取該元素邊表中的第一個邊結(jié)點 */while (p) /* 刪除以該頂點為起點的邊 */ k = p-endvex;indegreek-;if (indegreek = 0) /* 將新的入度為零的邊入棧 */ indegree
5、k = top; top = k;p = p-nextedge;if (nodeno n) /* AOV 網(wǎng)中存在回路 */ printf(The aov network has a cyclen); return FALSE;return TRUE;/* 邊的插入算法 */ void insert(GraphList* p,int a,int b) EdgeList pp;PEdgeNode temp;temp = (PEdgeNode)malloc(sizeof(EdgeNode); temp-endvex = b;temp-nextedge = NULL;pp = p-vexsa.edg
6、elist;if (pp = NULL)p-vexsa.edgelist = temp;elsewhile (pp-nextedge != NULL)pp = pp-nextedge; pp-nextedge = temp;/* 實例鄰接表的構(gòu)造 */GraphList * makeList()GraphList* p;int i;p = (GraphList*)malloc(sizeof(GraphList);p-n = 9;for (i = 0; i n; i+)p-vexsi.edgelist = NULL;insert(p, 0, 2);insert(p, 0, 7);insert(p, 1, 2);insert(p, 1, 3);insert(p, 1, 4);insert(p, 2, 3);insert(p, 3, 5);insert(p, 3, 6);insert(p, 4, 5);insert(p, 7, 8);insert(p, 8, 6);return p;void main()GraphList *p;Topo topo;int i;p = makeList();if (topoSor
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 羅湖別墅防水施工方案
- 疊墅清盤特價合同范本
- 叉車包車業(yè)務合同范本
- 光纖采購合同范例
- 隧道管材施工方案
- 夜場簽約合同范例
- 企業(yè)經(jīng)營合同范例
- 用工單位動態(tài)管理方案
- 夜場承包化妝合同范本
- 企業(yè)訂單合同范本
- 2024年微生物檢測試劑行業(yè)商業(yè)計劃書
- 河南開封介紹課件
- 通信設(shè)備售后服務方案
- 高中英語選擇性必修一單詞表
- 初中生物校本課程綱要
- 物業(yè)公司介紹
- 賣花生混聲合唱簡譜
- 數(shù)學方法在物理中的應用
- 【永輝超市公司員工招聘問題及優(yōu)化(12000字論文)】
- 心肺復蘇指南
- 《智能物聯(lián)網(wǎng)導論》AIoT導論-第2章課件
評論
0/150
提交評論