版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計報告</p><p> 學(xué) 院 計算機與通信工程 專 業(yè) 網(wǎng)絡(luò)工程 </p><p> 班 級 網(wǎng)絡(luò)1101班 學(xué) 號 </p><p> 學(xué)生姓名 指導(dǎo)教師 </p><p> 課
2、程成績 完成日期 2013年7月12日</p><p><b> 課程設(shè)計任務(wù)書</b></p><p> 拓?fù)渑判蛩惴ǖ难芯颗c實現(xiàn)</p><p> 摘 要 該課程設(shè)計研究AOV網(wǎng)。研究圖的存儲結(jié)構(gòu),研究AOV網(wǎng)(活動在頂點的網(wǎng),有向網(wǎng))的存儲結(jié)構(gòu)與輸入算法,并研究拓?fù)渑判蛩惴ǖ膶崿F(xiàn)方法,在此基
3、礎(chǔ)上對該算法進行分析。通過對拓?fù)渑判騿栴}的分析、設(shè)計、編碼、測試等工作,掌握針對實際應(yīng)用問題設(shè)計數(shù)據(jù)結(jié)構(gòu),結(jié)合C語言解決實際應(yīng)用問題的一般方法和過程,初步掌握利用數(shù)據(jù)結(jié)構(gòu)解決實際應(yīng)用問題的一般方法。</p><p> 關(guān)鍵字 AOV網(wǎng);拓?fù)渑判?;算法設(shè)計;C語言;數(shù)據(jù)結(jié)構(gòu)</p><p><b> 目錄</b></p><p><b
4、> 摘要3</b></p><p><b> 1 引言5</b></p><p> 1.1 課程設(shè)計的目的5</p><p> 1.2 課程設(shè)計的內(nèi)容6</p><p> 1.3 課程設(shè)計的目標(biāo)6</p><p><b> 2 設(shè)計內(nèi)容7&
5、lt;/b></p><p> 2.1 問題描述7</p><p> 2.2 思路分析7</p><p> 2.3 過程演示8</p><p> 3 算法分析及詳細(xì)實現(xiàn)9</p><p> 3.1 算法分析9</p><p> 3.2 算法中用到的函數(shù)聲明
6、9</p><p> 3.3 部分程序編寫9</p><p> 4 程序的運行環(huán)境及運行結(jié)果11</p><p> 4.1 程序運行的環(huán)境11</p><p> 4.2 運行結(jié)果11</p><p><b> 5 總結(jié)14</b></p><p>
7、 5.1 課程設(shè)計總結(jié)14</p><p> 5.2 心得與體會14</p><p><b> 參考文獻15</b></p><p><b> 附件16</b></p><p><b> 1 引言</b></p><p> 課程設(shè)
8、計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程。</p><p> 數(shù)據(jù)結(jié)構(gòu)是學(xué)習(xí)計算機相關(guān)專業(yè)的非常重要的知識,所謂結(jié)構(gòu)就是組織形式,數(shù)據(jù)的結(jié)構(gòu)就是數(shù)據(jù)怎么組織,即怎么描述,怎么在電腦中存儲。不同類型的數(shù)據(jù),它們的組織形式(數(shù)據(jù)結(jié)構(gòu))是不同的,在程序設(shè)計中,除了應(yīng)精心設(shè)計算法外,還應(yīng)精心組織數(shù)據(jù)(包括原始數(shù)據(jù)、中間結(jié)果 、最終結(jié)果
9、),使之形成一定的組織形式(數(shù)據(jù)結(jié)構(gòu)),以便讓計算機盡可能高效率地處理?!稊?shù)據(jù)結(jié)構(gòu)》是計算機科學(xué)與工程的基礎(chǔ)研究之一,掌握該領(lǐng)域的知識對于我們進一步進行高效率的計算機程序開發(fā)非常重要。無論在中國還是在美國,《數(shù)據(jù)結(jié)構(gòu)》一直是大學(xué)的計算機專業(yè)重要的專業(yè)基礎(chǔ)課。</p><p> 數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計要求學(xué)生熟練掌握數(shù)據(jù)結(jié)構(gòu)的邏輯特性和物理表示,具有分析問題的能力,可以根據(jù)問題選擇合適的數(shù)據(jù)結(jié)構(gòu),運用該數(shù)據(jù)結(jié)構(gòu)結(jié)合相
10、應(yīng)的算法解決實際問題。</p><p> 1.1 課程設(shè)計的目的</p><p> 為了更好的學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),深刻理解數(shù)據(jù)結(jié)構(gòu)在解決實際問題中的應(yīng)用,體會其重要性,熟練掌握線性表、棧和隊列、串、數(shù)組、樹、圖等常用的數(shù)據(jù)結(jié)構(gòu),熟悉各自的特點和應(yīng)用場合。</p><p> 同時鍛煉自己獨立分析理解問題的能力,學(xué)會根據(jù)不同的問題選擇合適的數(shù)據(jù)結(jié)構(gòu),然后結(jié)合適當(dāng)?shù)乃惴?/p>
11、解決問題。鍛煉自己的設(shè)計和編寫程序的技巧,進一步調(diào)試和測試自己所寫的程序,使其功能更加完善,養(yǎng)成較好的編寫程序習(xí)慣。</p><p> 提高綜合運用所學(xué)的理論知識和方法獨立分析和解決問題的能力[1],訓(xùn)練用系統(tǒng)的觀點和軟件開發(fā)一般規(guī)范進行軟件開發(fā),培養(yǎng)軟件工作者所應(yīng)具備的科學(xué)的工作方法和作風(fēng)。本課程設(shè)計的目的就是要達到理論與實際應(yīng)用相結(jié)合,使同學(xué)們能夠根據(jù)數(shù)據(jù)對象的特性,學(xué)會數(shù)據(jù)組織的方法,能把現(xiàn)實世界中的實際
12、問題在計算機內(nèi)部表示出來,并培養(yǎng)基本的、良好的程序設(shè)計技能[2]。</p><p> 1.2 課程設(shè)計的內(nèi)容</p><p> 本次課程設(shè)計要求對于給定的AOV網(wǎng)求出它所有拓?fù)湫蛄?。AOV網(wǎng)(是一個有向無環(huán)圖(Directed Acycline Graph,DAG圖)[3]。AOV網(wǎng)中,如果頂點Vi表示的活動在和頂點Vj表示的活動之前進行,則稱Vi是Vj的前驅(qū)頂點,Vj是Vi后繼頂點
13、。拓?fù)渑判蚓褪菍⒂邢驘o環(huán)圖中的各個頂點排成一個序列,使得所有的前去后繼關(guān)系都得到滿足。對于相互之間沒有次序關(guān)系的頂點,在拓?fù)渑判虻男蛄兄锌梢蕴幵谌我獾奈恢?。因此,拓?fù)渑判虻慕Y(jié)果往往是不唯一的。本次課程設(shè)計的主要任務(wù)就是將給定的一個AOV網(wǎng)輸出所有的該種序列[4]。</p><p> 1.3 課程設(shè)計的目標(biāo)</p><p> 通過對拓?fù)渑判騿栴}的分析、設(shè)計、編碼、測試等工作,掌握針對實
14、際應(yīng)用問題設(shè)計數(shù)據(jù)結(jié)構(gòu),結(jié)合C語言解決實際應(yīng)用問題的一般方法和過程,初步掌握利用數(shù)據(jù)結(jié)構(gòu)解決實際應(yīng)用問題的一般方法。</p><p><b> 2 設(shè)計內(nèi)容</b></p><p><b> 2.1 問題描述</b></p><p> 在AOV網(wǎng)中為了更好地完成工程,必須滿足活動之間先后關(guān)系,需要將各活動排一個先后
15、次序即為拓?fù)渑判?。拓?fù)渑判蚩梢詰?yīng)用于教學(xué)計劃的安排,根據(jù)課程之間的依賴關(guān)系,制定課程安排計劃。按照用戶輸入的課程數(shù),課程間的先后關(guān)系數(shù)目以及課程間兩兩間的先后關(guān)系,程序執(zhí)行后會給出符合拓?fù)渑判虻恼n程安排計劃。</p><p><b> 2.2 思路分析</b></p><p> 一種拓?fù)湫蛄械纳梢话阌幸幌虏襟E:</p><p> ?。?
16、)、從有向無環(huán)圖中選擇一個沒有前驅(qū)結(jié)點的頂點并加入到結(jié)點的序列中;</p><p> ?。?)、從有向無環(huán)圖中刪除該頂點以及該頂點為尾的所有的??;</p><p> ?。?)、重復(fù)(1)(2)的步驟。</p><p> 在整個拓?fù)渑判虻倪^程中需要頻繁的檢查頂點的前驅(qū)以及作刪除頂點和弧的操作,在這里我們用兩個全局變量rudu[max_vertex_num]和visi
17、ted[max_vertex_num]來分別實現(xiàn)這兩個操作,如果rudu[i]為零則表示無前驅(qū)結(jié)點,如果visited[i]為零則表示沒有被訪問過。如果每刪除一個結(jié)點就檢查,那樣的話時間復(fù)雜度將很大(等于遍歷所有的頂點一遍),因此設(shè)計一個堆棧,把檢測到的入度為零的結(jié)點入棧。每次刪除頂點只要從棧中取出一個結(jié)點即可。</p><p> 但是如果需要實現(xiàn)一個AOV網(wǎng)所有拓?fù)湫蛄械纳蓜t不止如此。在每找到一個符合要求的
18、結(jié)點后入棧,從而實現(xiàn)一種拓?fù)渑判?。在一趟拓?fù)渑判蚪Y(jié)束后,應(yīng)該進行恢復(fù)刪除的結(jié)點和刪除的弧,并標(biāo)記已經(jīng)有過的序列,在恢復(fù)某幾個個結(jié)點后進行下一次的拓?fù)渑判颉?lt;/p><p><b> 2.3 過程演示</b></p><p> 該部分給出了算法執(zhí)行的流程,如圖2-1所示。</p><p> 圖 2-1 算法流程圖</p>&
19、lt;p> 3 算法分析及詳細(xì)實現(xiàn)</p><p><b> 3.1 算法分析</b></p><p> 首先建立空棧,并從第一個頂點開始進行拓?fù)渑判?。將該結(jié)點初始化為被訪問過,并將圖類的結(jié)點指針指向該編號的結(jié)點的表頭數(shù)組firstarc域,把該頂點入棧后,將所有的以它為起點的弧都刪掉,即將弧的終點的入度都減一。接著判斷棧里面的數(shù)據(jù)個數(shù)是否和圖頂點的個數(shù)
20、一樣,如果一樣,則說明已經(jīng)有一次拓?fù)渑判蛲瓿?,若不一樣,則往下進行遞歸,再將符合條件的頂點入棧,直到一次拓?fù)渑判蛲瓿傻臈l件成立。最后將頂點出棧,恢復(fù)所有結(jié)點的入度,并準(zhǔn)備下一趟拓?fù)渑判颉?lt;/p><p> 3.2 算法中用到的函數(shù)聲明</p><p> 在該程序中用到了很多函數(shù),具體聲明如表3-1所示。</p><p> 表3-1 算法中用到的函數(shù)聲明<
21、;/p><p> 3.3 部分程序編寫</p><p> 實現(xiàn)該算法的具體編碼如下:</p><p> void topusort(Stack *L,ALGraph *G,int i){//拓?fù)渑判?lt;/p><p> ListNode *P;</p><p> int j,k;Soutput(L);</p
22、><p> Sinsert(L,i); //把頂點Vi加入到棧中</p><p> P=G->head[i].firstarc;</p><p> visited[i]=1; //把排序過的點標(biāo)記</p><p> while(P){</p><p> j=P->number;&l
23、t;/p><p> rudu[j]--; //把以Vi為頭的終止結(jié)點入度減1</p><p> P=P->next;</p><p><b> }</b></p><p> if(L->top+1==G->vexnum){//判斷棧中一種拓?fù)渑判蛲瓿?lt;/p><p> S
24、output(L);</p><p> printf("\n");</p><p><b> flag++;</b></p><p><b> }</b></p><p> for(k=0;k<G->vexnum;k++)//調(diào)用部分</p>&
25、lt;p> if((visited[k]==0)&&(rudu[k]==0))// 如果Vk在此輪中未被訪問過且入度為0</p><p> topusort(L,G,k);</p><p> visited[i]=0; //使Vi恢復(fù)為未訪問</p><p> P=G->head[i].firstarc;</p>
26、<p><b> while(P)</b></p><p><b> {</b></p><p> j=P->number;</p><p> rudu[j]++; //使Vj的入度恢復(fù) ,加1</p><p> P=P->next;</p><
27、p><b> }</b></p><p> Sdelete(L);</p><p><b> }</b></p><p> 4 程序的運行環(huán)境及運行結(jié)果</p><p> 4.1 程序運行的環(huán)境</p><p> 一個程序需要一個良好的環(huán)境才能運行,該課
28、程設(shè)計中的程序運行的硬件、軟件環(huán)境如下。</p><p><b> (1)硬件環(huán)境</b></p><p><b> 1)學(xué)生用微機</b></p><p><b> 2)局域網(wǎng)</b></p><p><b> ?。?)軟件環(huán)境</b></p
29、><p> 1)Windows 8 旗艦版系統(tǒng)</p><p><b> 2)VS2010</b></p><p><b> 4.2 運行結(jié)果</b></p><p> 程序的運行結(jié)果將從三個方面予以介紹。</p><p><b> ?。?)圖的輸入</
30、b></p><p> 輸入圖,結(jié)果如圖4-1所示。在這里首先輸入頂點數(shù)和邊數(shù),然后輸入沒條邊的起點終點編號和權(quán)值。</p><p> 圖 4-1 圖的輸入</p><p> ?。?)圖鄰接表的輸出</p><p> 輸出圖的鄰接矩陣。輸入圖過后按回車鍵顯示圖的鄰接表,如圖4-2所示。</p><p>
31、圖 4-2 圖鄰接表的輸出</p><p> ?。?)拓?fù)湫蛄械妮敵?lt;/p><p> 在顯示完拓?fù)湫蛄泻蟀椿剀囕敵鲈搱D的所有拓?fù)渑判蛐蛄?,如圖4-3所示。</p><p> 圖 4-3 拓?fù)湫蛄械妮敵?lt;/p><p><b> 5 總結(jié)</b></p><p> 5.1 課程設(shè)計總結(jié)&
32、lt;/p><p> 課程設(shè)計可以檢驗學(xué)生對知識的掌握程度。同時更反映了一個學(xué)生對課程設(shè)計的態(tài)度,對待任何事都要認(rèn)真,可以不會,可以做的不是最好的,但是一定要盡自己最大的努力去完成一件哪怕再小的事。在這次課程設(shè)計中學(xué)到了很多新的知識,同時也鞏固了之前學(xué)過知識。對靜態(tài)鏈表有了更深的理解,對哈夫曼樹及哈夫曼編碼更是印象深刻。雖然,最后根據(jù)要求完成了任務(wù),但期間還是出現(xiàn)了種種的問題,比如在編寫完函數(shù)時,運行結(jié)果總是不對,
33、調(diào)試了好多遍,也沒有發(fā)現(xiàn)錯誤,沒有想到是選擇函數(shù)除了差錯,一個簡單的函數(shù),怎么也沒有想到會是這里出了錯,是因為我給s1,s2變量賦初值時出了錯誤。同時,為了更好的完成任務(wù)還查閱了好多資料,不懂的就到處搜索,去圖書館借相應(yīng)的書籍來看,鍛煉了自己查閱資料的能力。</p><p> 5.2 心得與體會</p><p> 我覺得本此課程設(shè)計最大的收獲就是學(xué)會按部就班的完成任務(wù)。首先想好用什么
34、數(shù)據(jù)結(jié)構(gòu),主要的思想要明確的認(rèn)定。然后選一個簡單的例子,按照你選定的思想,一步一步的走程序,才能更早的發(fā)現(xiàn)程序還存在那些沒有考慮到的缺陷。特別忌諱的是到寫程序的時候,對主要思想和數(shù)據(jù)結(jié)構(gòu)還不是很確定。最后在調(diào)試程序的階段,這次我開始用設(shè)置斷點的方法,一步一步看是否達到你要的理想結(jié)果,從而來找出程序中出錯的地方。還有,一種方法也是用一個輸出語句,分別放在程序的不同位置,通過輸出結(jié)果,也可以快速判斷出程序不能運行的是那一個語句了。從而方便你
35、修改,快速得到正確的結(jié)果。還有,這次調(diào)試的過程中,我表現(xiàn)的比以前要更有耐心,這也是一個很好的收獲。</p><p> 還有一個更重要的體會就是,遇到不會的地方,我開始習(xí)慣到圖書館或是網(wǎng)上去找資料。這是一個很好的學(xué)習(xí)過程,它不僅僅是可以解決這個問題,關(guān)鍵是你會從找資料學(xué)習(xí)的過程中,會學(xué)好很多很多意想不到的知識。可能會比你手頭上要學(xué)習(xí)的知識多得多。</p><p><b> 參考
36、文獻</b></p><p> [1]嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語言版)[M].北京:清華大學(xué)出版社,2012.5[2]李春葆,尹為民.數(shù)據(jù)結(jié)構(gòu)教程上機指導(dǎo)[M].北京:清華大學(xué)出版社,2008[3]Andrew Binstock,John Rex.程序員實用算法(第二版)[M].北京:機械工業(yè)出版社,2009.06[4]Thomas H.Cormen, Charles E.Leiserso
37、n,Ronald L.Riverst, Clfford Stein.Introduction to Alogrithms Second Edition[M].US:Machine Press,2012</p><p><b> 附件</b></p><p><b> 程序清單</b></p><p> #includ
38、e"stdio.h"</p><p> #include"malloc.h"</p><p> #include"stdlib.h"</p><p> #define max_vertex_num 100 //頂點的最大個數(shù)</p><p> typedef struct n
39、ode{ //鄰接表中的結(jié)點類型</p><p> int number; //結(jié)點編號</p><p> struct node *next; //指向下一個結(jié)點</p><p> int info; //與
40、表頭結(jié)點邊的信息</p><p> }ListNode;</p><p> typedef struct{ //定義表頭結(jié)點數(shù)組</p><p> int number; //頂點信息</p><p> ListNode *firstarc; //指向第一個鄰接點<
41、/p><p> }AdjList; //表頭結(jié)點類型</p><p> typedef struct{ //鄰接表類型</p><p> AdjList head[max_vertex_num]; //鄰接表的組</p><
42、p> int vexnum; //頂點個數(shù)表頭數(shù)</p><p> intedgnum; //邊的個數(shù)</p><p><b> }ALGraph;</b></p><p> typedef struct{ </p><p>
43、int data[max_vertex_num];//堆棧數(shù)組</p><p> int top;//棧頂標(biāo)志</p><p> }Stack; //順序表類型</p><p> int rudu[max_vertex_num];//定義一個存儲每個頂點入度的全局?jǐn)?shù)組</p><p> int visited[max_vert
44、ex_num];//定義全局?jǐn)?shù)組標(biāo)志拓?fù)渑判蜻^程中是否訪問過</p><p> int flag=0;//接受拓?fù)渑判虻拇螖?shù),若為0,則該圖不是AOV網(wǎng)</p><p> ALGraph *create_AdjListGraph(){</p><p> ALGraph *T; ListNode *p; //定義指向結(jié)點的指針</p><p&
45、gt; int i,j; //輸入邊是的起點和終點</p><p> T=(ALGraph *)malloc(sizeof(ALGraph));//定義圖</p><p> printf("1、請輸入頂點數(shù):");</p><p> scanf("%d",&T-&g
46、t;vexnum); //輸入頂點個數(shù)</p><p> for(i=0;i<T->vexnum;i++){ //初始化表頭結(jié)點數(shù)組</p><p> T->head[i].number=i; //初始化結(jié)點編號</p><p> rudu[i]=0; //將每個節(jié)點
47、的荼毒初始化為</p><p> visited[i]=0;</p><p> T->head[i].firstarc=NULL; //將表頭結(jié)點數(shù)組的每個結(jié)點的指針域置空</p><p><b> }</b></p><p> printf("2、請輸入邊數(shù):");</p&g
48、t;<p> scanf("%d",&T->edgnum); //輸入邊的個數(shù)</p><p> printf("3、按起點終點權(quán)值的順序一次輸入邊的序列:\n");</p><p> for(i=0;i<T->edgnum;i++){</p><p> prin
49、tf("請輸入第 %d 條邊:",i+1);</p><p> p=(ListNode *)malloc(sizeof(ListNode));</p><p> scanf("%d",&j); //輸入這條邊起始節(jié)點的編號</p><p> scanf("%d",&a
50、mp;p->number); //輸入這條邊的終點的編號</p><p> scanf("%d",&p->info); //輸入這條邊的權(quán)值</p><p> printf("\n");</p><p> rudu[p->number]++; //將插入邊
51、中結(jié)點的入度加1</p><p> p->next=T->head[j].firstarc;</p><p> T->head[j].firstarc=p; //將該結(jié)點插入到單鏈表中創(chuàng)建一條邊</p><p><b> }</b></p><p><b> return T
52、;</b></p><p><b> }</b></p><p> void print(ALGraph *T){//輸出圖的鄰接表</p><p> ListNode *p;</p><p><b> int i;</b></p><p> print
53、f("表頭數(shù)組(該結(jié)點的入度) 與之有邊的節(jié)點(該弧的權(quán)值)\n");</p><p> for(i=0;i<T->vexnum;i++){</p><p> printf("V%d(%d) ",T->head[i].number,rudu[i]);</p><p> p=T->
54、;head[i].firstarc;</p><p><b> while(p){</b></p><p> printf("---------------->V%d(%d)",p->number,p->info);</p><p> p=p->next;</p><p>
55、;<b> }</b></p><p> printf("\n");</p><p><b> }</b></p><p><b> }</b></p><p> Stack *Setnull(){//置???lt;/p><p>
56、;<b> Stack *L;</b></p><p> L=(Stack *)malloc(sizeof(Stack));</p><p> L->top=-1;</p><p> return(L);</p><p><b> }</b></p><p>
57、 void Sinsert(Stack *L,int x){//入棧</p><p> L->top=L->top+1;</p><p> L->data[L->top]=x;</p><p><b> } </b></p><p> void Sdelete(Stack *L){//出
58、棧</p><p> L->top=L->top-1;</p><p><b> }</b></p><p> void Soutput(Stack *L){//輸出棧中元素 </p><p><b> int i;</b></p><p> for
59、(i=0;i<L->top+1;i++)</p><p> printf("V%d ",L->data[i]);</p><p> printf("\n");</p><p><b> }</b></p><p> void topusort(Stack
60、*L,ALGraph *G,int i){//拓?fù)渑判?lt;/p><p> ListNode *P;</p><p> int j,k;Soutput(L);</p><p> Sinsert(L,i); //把頂點Vi加入到順序表中</p><p> P=G->head[i].firstarc;</p>&
61、lt;p> visited[i]=1; //把排序過的點標(biāo)記</p><p> while(P){</p><p> j=P->number;</p><p> rudu[j]--; //把以Vi為頭的終止結(jié)點入度減1</p><p> P=P->next;</p><p>&
62、lt;b> }</b></p><p> if(L->top+1==G->vexnum){//判斷順序表中一種拓?fù)渑判蛲瓿?lt;/p><p> Soutput(L);</p><p> printf("\n");</p><p><b> flag++;</b>&
63、lt;/p><p><b> }</b></p><p> for(k=0;k<G->vexnum;k++)//調(diào)用部分</p><p> if((visited[k]==0)&&(rudu[k]==0))// 如果Vk在此輪中未被訪問過且入度為0</p><p> topusort(L,
64、G,k);</p><p> visited[i]=0; //使Vi恢復(fù)為未訪問</p><p> P=G->head[i].firstarc;</p><p><b> while(P)</b></p><p><b> {</b></p><p> j=
65、P->number;</p><p> rudu[j]++; //使Vj的入度恢復(fù) ,加1</p><p> P=P->next;</p><p><b> }</b></p><p> Sdelete(L);</p><p><b> }</b>&
66、lt;/p><p> void caidan(){</p><p> printf(" \t_____________________________________________________________\n\n");</p><p> printf(" \t◇
67、 ◇\n");</p><p> printf(" \t◇ ◇\n");</p><p> printf(" \t◇ **********歡迎使用AOV網(wǎng)拓?fù)湫蛄酗@示程序!**
68、******** ◇\n");</p><p> printf(" \t◇ ◇\n");</p><p> printf(" \t◇
69、 ◇\n");</p><p> printf("\t_____________________________________________________________\n");</p><p><b> }</b></p><p> void caidan1(){</p>
70、<p> printf("\n\n\n\n\n");</p><p> printf(" \t_____________________________________________________________\n\n");</p><p> printf(" \t◇
71、 ◇\n");</p><p> printf(" \t◇ ◇\n");</p><p> printf(" \t◇ ★★★★ 謝謝使用
72、! ★★★★ ◇\n");</p><p> printf(" \t◇ ◇\n");</p><p> printf(" \t◇
73、 ◇\n");</p><p> printf(" \t_____________________________________________________________\n");</p><p><b> }</b></p><p> void main()&l
74、t;/p><p><b> {</b></p><p> int i;ALGraph *G;Stack *L;int n=1;</p><p> L=Setnull();</p><p> while(n==1){//循環(huán)顯示拓?fù)渑判?lt;/p><p> system("cls&qu
75、ot;);</p><p><b> caidan();</b></p><p> printf("注意:請按下列步驟輸入您的AOV網(wǎng)!\n");</p><p> G=create_AdjListGraph();</p><p> system("cls");</p
76、><p><b> caidan();</b></p><p> printf("該圖的鄰接表為:\n");</p><p><b> print(G);</b></p><p> system("pause");</p><p>
77、 system("cls");</p><p><b> caidan();</b></p><p> printf("以下是該圖所有的拓?fù)湫蛄校篭n");</p><p> for(i=0;i<G->vexnum;i++)</p><p> if(rudu[
78、i]==0&&visited[i]==0) topusort(L,G,i);</p><p> if(flag>0){</p><p> printf("該AOV圖有%d種拓?fù)渑判?\n",flag);</p><p><b> flag=0;</b></p><p>&
79、lt;b> }</b></p><p><b> else </b></p><p> printf("\n\n\t出錯!\n\n此圖不是AOV網(wǎng),無拓?fù)渑判蛐蛄?\n\n\n");</p><p> system("pause");</p><p>
80、 system("cls");</p><p><b> caidan();</b></p><p> printf("按1繼續(xù)顯示下一個圖的拓?fù)湫蛄?,?結(jié)束程序!\n");</p><p> scanf("%d",&n);</p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 拓?fù)渑判蛘n程設(shè)計
- 拓?fù)渑判蛘n程設(shè)計報告
- 拓?fù)渑判?算法與數(shù)據(jù)結(jié)構(gòu)課程設(shè)計)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計有向圖拓?fù)渑判蛩惴ǖ膶崿F(xiàn)
- 課程設(shè)計報告---排序算法的實現(xiàn)與比較
- 課程設(shè)計---設(shè)計排序典型算法(冒泡與快速排序)
- 內(nèi)部排序課程設(shè)計---內(nèi)部排序算法的比較
- 課程設(shè)計-排序算法比較
- 課程設(shè)計報告---文章編輯、猴子選大王、建立二叉樹、拓?fù)渑判?、各種排序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---排序算法的實現(xiàn)
- 課程設(shè)計---多種排序的實現(xiàn)與比較
- 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計報告---排序算法的實現(xiàn)與比較
- c歸并排序與堆排序的課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--排序算法
- 課程設(shè)計報告----內(nèi)排序算法比較
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---希爾排序,冒泡排序,快速排序
評論
0/150
提交評論