2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩21頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論