數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)有向圖的拓?fù)渑判騙第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)有向圖的拓?fù)渑判騙第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)有向圖的拓?fù)渑判騙第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)有向圖的拓?fù)渑判騙第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)有向圖的拓?fù)渑判騙第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、沈陽(yáng)航空航天大學(xué) 課課 程程 設(shè)設(shè) 計(jì)計(jì) 報(bào)報(bào) 告告 課程設(shè)計(jì)名稱:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 課程設(shè)計(jì)題目:有向圖的拓?fù)渑判蛴邢驁D的拓?fù)渑判?院(系):計(jì)算機(jī)學(xué)院 專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù) 班 級(jí): 學(xué) 號(hào): 姓 名: 指導(dǎo)教師: 此頁(yè)為任務(wù)書 目目 錄錄 沈陽(yáng)航空航天大學(xué)沈陽(yáng)航空航天大學(xué).ii 第一章第一章 需求分析需求分析.1 1.1 題目的內(nèi)容與要求 .1 1.2 程序?qū)崿F(xiàn)的功能 .1 第二章第二章 概要設(shè)計(jì)概要設(shè)計(jì).2 2.1 算法思想.2 2.2 系統(tǒng)功能模塊圖.3 第三章第三章 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì).5 2.2 系統(tǒng)流程設(shè)計(jì).5 3.2 數(shù)據(jù)結(jié)構(gòu).6 3.2.1 圖.6 3.2

2、.2 棧.6 3.3 具體實(shí)現(xiàn)函數(shù) .7 3.3.1 程序所需頭文件及全局變量.7 3.3.2 棧操作.7 3.3.2 有向圖(dag)鄰接表存儲(chǔ)結(jié)構(gòu)(alg)的操作.8 3.3.3 拓?fù)渑判?8 3.3.4 簡(jiǎn)單繪圖函數(shù).9 第四章第四章 調(diào)試分析調(diào)試分析.10 4.1 調(diào)試數(shù)據(jù)及結(jié)果 .10 4.2 遇到的困難、錯(cuò)誤及修改 .11 第五章第五章 用戶使用說(shuō)明與執(zhí)行結(jié)果用戶使用說(shuō)明與執(zhí)行結(jié)果.12 參考文獻(xiàn)參考文獻(xiàn).21 附附 錄(關(guān)鍵部分程序清單)錄(關(guān)鍵部分程序清單).22 第一章 需求分析 1.1 題目的內(nèi)容與要求題目的內(nèi)容與要求 本程序要求用合適方便的方式輸入一個(gè)有向圖,而且該有向圖

3、在程序中采用 鄰接表的存儲(chǔ)結(jié)構(gòu)存儲(chǔ),然后對(duì)該有向圖進(jìn)行拓?fù)渑判颉?如果輸入的有向圖有環(huán)存在,程序需要給出圖中有環(huán)的結(jié)果,否則,程序需 要輸出對(duì)圖進(jìn)行拓?fù)渑判虻慕Y(jié)果。 要求有向圖的輸入要盡量的簡(jiǎn)單、簡(jiǎn)便,能用圖形形象的顯示出輸入的有向 圖,使其可以形象方便的觀察。能夠用動(dòng)態(tài)圖形形象的演示拓?fù)渑判虻木唧w過(guò)程。 1.2 程序?qū)崿F(xiàn)的功能程序?qū)崿F(xiàn)的功能 1.簡(jiǎn)便的輸入一個(gè)有向圖。 2.在圖形界面上顯示出有向圖。 3.在圖形界面上形象的用動(dòng)態(tài)圖形演示拓?fù)渑判虻木唧w過(guò)程。 4.程序可以判斷輸入的有向圖是否有環(huán)。有環(huán)時(shí),輸出有環(huán)無(wú)法排序的結(jié)果; 無(wú)環(huán)時(shí),輸出拓?fù)渑判虻慕Y(jié)果。 第二章 概要設(shè)計(jì) 2.1 算法思想

4、算法思想 1 采用鄰接表存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)有向圖;有向圖需通過(guò)頂點(diǎn)數(shù)、弧數(shù)、頂點(diǎn)以及 弧等信息建立。 2 拓?fù)渑判蛩惴?void topologicalsort(algraph g) 中,先輸出入度為零的頂 點(diǎn),而后輸出新的入度為零的頂點(diǎn),此操作可利用棧實(shí)現(xiàn)。 3 拓?fù)渑判蛩惴?void topologicalsort(algraph g),大體思想為: 1)遍歷有向圖各頂點(diǎn)的入度,將所有入度為零的頂點(diǎn)入棧; 2)棧非空時(shí),輸出一個(gè)頂點(diǎn),并對(duì)輸出的頂點(diǎn)數(shù)計(jì)數(shù); 3)該頂點(diǎn)的所有鄰接點(diǎn)入度減一,若減一后入度為零則入棧; 4)重復(fù) 2)、3),直到棧為空,若輸出的頂點(diǎn)數(shù)與圖的頂點(diǎn)數(shù)相等則該圖 可拓?fù)渑判?/p>

5、,否則圖中有環(huán)。 5)重復(fù) 2)、3)、4)直到序列中所有元素均被遍歷,則該序列是拓?fù)湫蛄校?否則不是拓?fù)湫蛄小?4 算法的時(shí)間復(fù)雜度和空間復(fù)雜度 拓?fù)渑判驅(qū)嶋H是對(duì)鄰接表表示的圖 g 進(jìn)行遍歷的過(guò)程,每次訪問(wèn)一個(gè)入度為 零的頂點(diǎn),若圖 g 中沒(méi)有回路,則需掃描鄰接表中的所有邊結(jié)點(diǎn),在算法開始時(shí), 為建立入度數(shù)組 d 需訪問(wèn)表頭向量中的所有邊結(jié)點(diǎn),算法的時(shí)間復(fù)雜度為 o(n+e)。 2.2 系統(tǒng)功能模塊結(jié)構(gòu)圖系統(tǒng)功能模塊結(jié)構(gòu)圖 本程序共分為 4 大模塊,有向圖創(chuàng)建模塊、拓?fù)渑判蚰K、拓?fù)渑判蚝诵乃?法模塊、繪圖模塊。 有向圖創(chuàng)建模塊 輸入有向圖的信息將有向圖信息存入鄰 接表中 在屏幕上輸出有向圖

6、 圖圖 3.1.1 有向圖創(chuàng)建模塊圖有向圖創(chuàng)建模塊圖 拓?fù)渑判蚰K 拓?fù)渑判蚝诵乃惴?模塊 在屏幕上動(dòng)態(tài)演示 排序 判斷是否有環(huán) 圖圖 3.1.2 拓?fù)渑判蚰K圖拓?fù)渑判蚰K圖 繪圖模塊 畫圓函數(shù)畫線函數(shù) 圖圖 3.1.3 繪圖模塊圖繪圖模塊圖 拓?fù)渑判蚝诵乃惴?模塊 棧操作求頂點(diǎn)入度0 入度出棧,其余 頂點(diǎn)入度減 1 圖圖 3.1.4 拓?fù)渑判蚝诵乃惴K圖拓?fù)渑判蚝诵乃惴K圖 第三章 詳細(xì)設(shè)計(jì) 2.2 系統(tǒng)流程設(shè)計(jì)系統(tǒng)流程設(shè)計(jì) 圖圖 2.12.1 系統(tǒng)流程圖系統(tǒng)流程圖 否 開始 輸入頂點(diǎn)及弧的信息 輸入符合條件? 根據(jù)輸入信息建立鄰接表,建立有 向圖,并在圖形界面上繪制出有向 圖。 建立

7、棧 在鄰接表中尋找入度為 0 的頂點(diǎn),將其順序入 棧 進(jìn)行拓?fù)渑判?,將棧頂元素出棧,并在圖形界面當(dāng)中演 示排序過(guò)程;將與棧頂元素鄰接的頂點(diǎn)的入度減一 判斷棧是否為空 結(jié)束 是 否 是 3.2 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) 3.2.1 圖圖 typedef char vertextypemax_name; / 字符串類型 typedef struct arcnode int adjvex;/ 該弧所指向的頂點(diǎn)的位置 struct arcnode *nextarc; / 指向下一條弧的指針 arcnode; / 表結(jié)點(diǎn) typedef struct vnode vertextype data;/ 頂點(diǎn)信息 a

8、rcnode *firstarc;/ 第一個(gè)表結(jié)點(diǎn)的地址,指向第一條依附該頂 點(diǎn)的弧的指針 vnode,adjlistmax_vertex_num;/ 頭結(jié)點(diǎn) typedef struct adjlist vertices; int vexnum,arcnum;/ 圖的當(dāng)前頂點(diǎn)數(shù)和弧數(shù) int kind;/ 圖的種類標(biāo)志 algraph 3.2.2 棧棧 typedef int selemtype; / 棧類型 #define stack_init_size 10/ 存儲(chǔ)空間初始分配量 #define stackincrement 2/ 存儲(chǔ)空間分配增量 / 棧的順序存儲(chǔ)表示 typedef

9、struct sqstack selemtype *base;/ 在棧構(gòu)造之前和銷毀之后,base 的值為 null selemtype *top;/ 棧頂指針 int stacksize;/ 當(dāng)前已分配的存儲(chǔ)空間,以元素為單位 sqstack;/ 順序棧 3.3 具體實(shí)現(xiàn)函數(shù)具體實(shí)現(xiàn)函數(shù) 3.3.1 程序所需頭文件及全局變量程序所需頭文件及全局變量 #include #include #include #include #include #include #define max_name 3 / 頂點(diǎn)字符串的最大長(zhǎng)度為 3 #define max_vertex_num 20 #define

10、m 8 /800*600 屏幕上定義 8 個(gè)點(diǎn)用來(lái)畫頂點(diǎn)圓 int xm= 50,250,450,650,750,650,450,250; int ym=250, 50, 50,150,250,350,450,450; 3.3.2 棧的操作棧的操作 1) int initstack(sqstack *s) 功能:初始化棧。構(gòu)造一個(gè)空棧 s 參數(shù):*s 待初始化的棧 2) int stackempty(sqstack s) 功能:判斷空棧 參數(shù):s 待判斷的棧 返回值:棧為空返回 1;棧非空返回 0 3) int push(sqstack *s, selemtype e) 功能:元素入棧 參數(shù):

11、*s 待操作的棧;插入元素 e 為新的棧頂元素 4) int pop(sqstack *s,selemtype *e) 功能:元素出棧 參數(shù):*s 待操作的棧;若棧不空,則刪除 s 的棧頂元素,用 e 返回其值, 并返回 1;否則返回 0 3.3.2 有向圖有向圖(dag)鄰接表存儲(chǔ)結(jié)構(gòu)鄰接表存儲(chǔ)結(jié)構(gòu)(alg)的操作的操作 1) int locatevex(algraph g,vertextype u) 功能:頂點(diǎn)在頭結(jié)點(diǎn)數(shù)組中的定位 參數(shù):g 待操作的圖;u 要在圖中定位的頂點(diǎn) 返回值:若 g 中存在頂點(diǎn) u,則返回該頂點(diǎn)在圖中位置;否則返回-1 2) int creategraph(alg

12、raph *g) 功能:建立圖。函數(shù)內(nèi)包含了由用戶輸入頂點(diǎn)數(shù)、弧數(shù)、頂點(diǎn)以及弧的操作 參數(shù):*g 待操作的圖 返回值:圖建立成功返回 1;圖建立失敗返回 0 3) void display(algraph g) 功能:輸出圖的鄰接表 g。用圖形顯示 參數(shù):g 待輸出的圖 4) void findindegree(algraph g,int indegree) 功能:求頂點(diǎn)的入度 參數(shù):g 待操作的圖,indegree儲(chǔ)存每個(gè)頂點(diǎn)的入度的數(shù)組 3.3.3 拓?fù)渑判蛲負(fù)渑判?1) int topologicalsort(algraph g) 功能:實(shí)現(xiàn)拓?fù)渑判?,并在圖形界面上演示排序過(guò)程 參數(shù):g

13、 待進(jìn)行拓?fù)渑判虻膱D 錯(cuò)誤判斷:包含有向圖是否有環(huán)的判斷 3.3.4 簡(jiǎn)單繪圖函數(shù)簡(jiǎn)單繪圖函數(shù) 1) void huayuan(int a,int b) 功能:以(a,b)為圓心,半徑 30,畫一個(gè)圓 參數(shù):a、b 圓心的 x、y 坐標(biāo)值 2) void huaxian(int a1,int b2,int c3,int d4) 功能:從起點(diǎn)(a1,b2)到終點(diǎn)(c3,d4)畫一條直線 參數(shù):(a1,b2) 起點(diǎn)坐標(biāo),(c3,d4) 終點(diǎn)坐標(biāo) 第四章 調(diào)試分析 4.1 調(diào)試數(shù)據(jù)及結(jié)果調(diào)試數(shù)據(jù)及結(jié)果 1、對(duì)“建立有向圖并輸出”的測(cè)試 1) 正確的有向圖信息 頂點(diǎn)數(shù)和弧數(shù):4,3 頂點(diǎn):a b c

14、d 邊: a bb cc d 結(jié)果:a b c 為一個(gè)拓?fù)渑判蛐蛄?2) 錯(cuò)誤的邊 頂點(diǎn)數(shù)和弧數(shù):4,3 頂點(diǎn):a b c d 邊: a bb cc e 結(jié)果:無(wú)法建立有向圖 3) 錯(cuò)誤的頂點(diǎn)數(shù)或弧數(shù) 頂點(diǎn)數(shù)和弧數(shù):3,7 結(jié)果:此有向圖有回路,無(wú)法進(jìn)行拓?fù)渑判颍?2、對(duì)“建立有向圖并求一個(gè)拓?fù)渑判蛐蛄小钡臏y(cè)試 1) 有向圖能實(shí)現(xiàn)拓?fù)渑判?頂點(diǎn)數(shù)和弧數(shù):5,5 頂點(diǎn):a b c d e 邊:a dd cc be ae c 結(jié)果:b 為一個(gè)拓?fù)渑判蛐蛄?2) 有向圖不能實(shí)現(xiàn)拓?fù)渑判?頂點(diǎn)數(shù)和弧數(shù):4,4 頂點(diǎn):a b c d 邊:ab ba cd dc 結(jié)果:此有向圖有回路,無(wú)法進(jìn)行拓?fù)渑判颍?

15、4.2 遇到的困難、錯(cuò)誤及修改遇到的困難、錯(cuò)誤及修改 1.vc+6.0 環(huán)境下無(wú)法繪圖。 解決辦法:在 上找到繪圖庫(kù) easyx,可以在 vc+6.0 上畫圖。 2. 在繪圖界面里不好確定下一個(gè)頂點(diǎn)的位置。 解決方法:自定義 8 個(gè)點(diǎn)用作頂點(diǎn)的圓心位置,放在一個(gè)數(shù)組中,使用時(shí)按 順序取用。缺點(diǎn)是擴(kuò)展性不強(qiáng)。 3. 畫線時(shí),線畫到了頂點(diǎn)圓內(nèi)了。 解決方法:大致估算一下圓心與參考點(diǎn)的距離,在坐標(biāo)上各加減適當(dāng)?shù)木嚯x, 使線差不多與圓相切。 第五章 用戶使用說(shuō)明與執(zhí)行結(jié)果 以下 17 張圖是本程序的運(yùn)行截圖,本程序使用方法一目了然。 圖圖 5.1 圖圖 5.2 圖圖 5.3 圖圖 5.4 圖圖 5.5

16、 圖圖 5.6 圖圖 5.7 圖圖 5.8 圖圖 5.9 圖圖 5.10 圖圖 5.11 圖圖 5.12 圖圖 5.13 圖圖 5.14 圖圖 5.15 圖圖 5.16 . 圖圖 5.17 參考文獻(xiàn) 1 嚴(yán)蔚敏, 數(shù)據(jù)結(jié)構(gòu)( c 語(yǔ)言版) ,北京,清華大學(xué)出版社, 2007 2 譚浩強(qiáng), c 語(yǔ)言程序設(shè)計(jì) ,北京,清華大學(xué)出版社, 2003 3 4 附 錄(關(guān)鍵部分程序清單) /* 數(shù)據(jù)結(jié)構(gòu) c 語(yǔ)言實(shí)現(xiàn)版 拓?fù)渑判?編譯環(huán)境:vc+6.0 日期:2012 年 2 月 16 日 */ /程序所需頭文件/ #include #include #include #include #include

17、#include #define max_name 3 / 頂點(diǎn)字符串的最大長(zhǎng)度+1 #define max_vertex_num 20 #define m 8 /800*600 屏幕上定義 8 個(gè)點(diǎn)用來(lái)畫頂 點(diǎn)圓 int xm= 50,250,450,650,750,650,450,250; int ym=250, 50, 50,150,250,350,450,450; /圖的鄰接表存儲(chǔ)表示/ typedef char vertextypemax_name; / 字符串類型 typedef struct arcnode int adjvex;/ 該弧所指向的頂點(diǎn)的位置 struct arcn

18、ode *nextarc; / 指向下一條弧的指針 arcnode; / 表結(jié)點(diǎn) typedef struct vnode vertextype data;/ 頂點(diǎn)信息 arcnode *firstarc;/ 第一個(gè)表結(jié)點(diǎn)的地址,指向第一條依附該頂 點(diǎn)的弧的指針 vnode,adjlistmax_vertex_num;/ 頭結(jié)點(diǎn) typedef struct adjlist vertices; int vexnum,arcnum;/ 圖的當(dāng)前頂點(diǎn)數(shù)和弧數(shù) int kind;/ 圖的種類標(biāo)志 algraph; / 采用鄰接表存儲(chǔ)結(jié)構(gòu),構(gòu)造圖 g/ / 若 g 中存在頂點(diǎn) u,則返回該頂點(diǎn)在圖中位

19、置;否則返回-1。 int locatevex(algraph g,vertextype u) int i; for(i=0;ig.vexnum;+i) if(strcmp(u,g.verticesi.data)=0) return i; return -1; int creategraph(algraph *g) int i,j,k; vertextype va,vb; arcnode *p; printf(本程序?yàn)橛邢驁D的拓?fù)渑判颍?qǐng)確定輸入圖的類型為有向圖,是, 請(qǐng)輸入 0:n ); scanf(%d, printf(請(qǐng)輸入有向圖的頂點(diǎn)數(shù)和邊數(shù),中間用空格間隔開來(lái)。nn); printf

20、(請(qǐng)注意,本程序目前只支持繪制 8 個(gè)頂點(diǎn)的有向圖,改進(jìn)升級(jí)版 敬請(qǐng)期待。n); scanf(%d%d, printf(請(qǐng)輸入%d 個(gè)頂點(diǎn)的值(%d 個(gè)字符):n,(*g).vexnum,max_name); for(i=0; i(*g).vexnum;+i)/ 構(gòu)造頂點(diǎn)向量 scanf(%s, (*g).verticesi.data); (*g).verticesi.firstarc = null; printf(請(qǐng)順序輸入每條弧(邊)的弧尾和弧頭,每一條邊一行,弧尾和弧頭 以空格作為間隔:n); for(k=0;kadjvex = j; p-nextarc = (*g).verticesi

21、.firstarc; / 插在表頭 (*g).verticesi.firstarc = p; return 1; / 輸出圖的鄰接表 g。用圖形顯示。/ void huayuan(int a,int b) /畫圓函數(shù) circle(a,b,30); void huaxian(int a1,int b2,int c3,int d4) /畫線函數(shù) line(a1,b2,c3,d4); void display(algraph g) int i; arcnode *p; switch(g.kind) case 0: printf(輸入的是有向圖。n); break; /開始用 easyx 畫圖/ i

22、nitgraph(800, 600); / 初始化圖形窗口 setbkcolor(hsltorgb(180,0.5,0.5);/設(shè)置背景色 cleardevice();/清屏函數(shù) setcolor(red);/設(shè)置繪圖線條的顏色 printf(%d 個(gè)頂點(diǎn):n,g.vexnum);/先畫頂點(diǎn)圓 for(i = 0; i g.vexnum; +i) getch(); huayuan(xi,yi); outtextxy(xi-5,yi-5,g.verticesi.data); printf(%s ,g.verticesi.data); /延時(shí)一秒/ /sleep(1000); printf(n%d

23、 條弧(邊):n, g.arcnum);/再畫連線,找點(diǎn)的指針使線變 for(i = 0; i g.vexnum; i+) p = g.verticesi.firstarc; while(p) if(g.kind adjvex-20,yp-adjvex+20); printf(%s%s ,g.verticesi.data, g.verticesp-adjvex.data); p=p-nextarc; printf(n); / 求頂點(diǎn)的入度/ void findindegree(algraph g,int indegree) int i; arcnode *p; for(i=0;ig.vexnu

24、m;i+) indegreei=0; / 賦初值 for(i=0;iadjvex+; p=p-nextarc; /.棧操作./ typedef int selemtype; / 棧類型 #define stack_init_size 10/ 存儲(chǔ)空間初始分配量 #define stackincrement 2/ 存儲(chǔ)空間分配增量 / 棧的順序存儲(chǔ)表示 typedef struct sqstack selemtype *base;/ 在棧構(gòu)造之前和銷毀之后,base 的值為 null selemtype *top;/ 棧頂指針 int stacksize;/ 當(dāng)前已分配的存儲(chǔ)空間,以元素為單位

25、sqstack;/ 順序棧 /初始化棧。構(gòu)造一個(gè)空棧 s。 int initstack(sqstack *s) / 為棧底分配一個(gè)指定大小的存儲(chǔ)空間 (*s).base = (selemtype *)malloc(stack_init_size*sizeof(selemtype); if( !(*s).base ) / 存儲(chǔ)分配失敗 printf(存儲(chǔ)空間分配失敗,請(qǐng)按任意鍵退出本程序,清空內(nèi)存后,再 運(yùn)行本程序。n); getch(); exit(0); (*s).top = (*s).base; / 棧底與棧頂相同表示一個(gè)空棧 (*s).stacksize = stack_init_siz

26、e; return 1; /判斷棧是否為空棧。若棧 s 為空棧(棧頂與棧底相同的) ,則返回 1,否則 返回 0。 int stackempty(sqstack s) if(s.top = s.base) return 1; else return 0; /入棧函數(shù)。插入元素 e 為新的棧頂元素。 int push(sqstack *s, selemtype e) if(*s).top - (*s).base = (*s).stacksize)/ 棧滿,追加存儲(chǔ)空間 (*s).base = (selemtype *)realloc(*s).base, (*s).stacksize + stac

27、kincrement) * sizeof(selemtype); if( !(*s).base ) exit(0); / 存儲(chǔ)分配失敗 (*s).top = (*s).base+(*s).stacksize; (*s).stacksize += stackincrement; *(*s).top)+=e; / 這個(gè)等式的+ * 優(yōu)先級(jí)相同,但是它們的運(yùn)算方式,是自右向左 return 1; /出棧函數(shù)。若棧不空,則刪除 s 的棧頂元素,用 e 返回其值,并返回 1;否 則返回 0。 int pop(sqstack *s,selemtype *e) if(*s).top = (*s).base)

28、 return 0; *e = *-(*s).top; / 這個(gè)等式的+ * 優(yōu)先級(jí)相同,但是它們的運(yùn)算方式,是自右向左 return 1; /拓?fù)渑判蛩惴?,c 語(yǔ)言實(shí)現(xiàn)的。/ int topologicalsort(algraph g) /有向圖 g 采用鄰接表存儲(chǔ)結(jié)構(gòu)。 int i,m=0,k,count,indegreemax_vertex_num; sqstack s; arcnode *p; char we2; /若 g 無(wú)回路,則輸出 g 的頂點(diǎn)的一個(gè)拓?fù)渑判蛄胁⒎祷?ok,否則 error。 findindegree(g,indegree); /對(duì)各頂點(diǎn)求入度 indegree0.vernum-1 initstack( /初始化棧 for(i=0;inextarc) k=p-adjvex; /對(duì) i 號(hào)頂點(diǎn)的每一 個(gè)鄰接點(diǎn)的入度減 1 if(!(-indegreek) /若入度減為 0,則入棧 push( setcolor(hsltorgb(180,0.5,0.5);/設(shè)置繪圖線條的顏色為背景 色,使頂點(diǎn)消失 getch(); huayuan(xk,yk); outtextxy(xk-5,yk-5,g.verticesi.data); huaxian(xi+20,yi-20,xp-adjvex-20,yp-adjvex+20); /for /while getch(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論