版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 數(shù)據(jù)結構課程設計報告</p><p> 題 目: 校 園 導 游 系 統(tǒng)</p><p> 院系名稱:計算機學院 </p><p> 專業(yè)名稱:計算機科學與技術</p><p><b> 班 級:</b></p><p><b>
2、 學生姓名: </b></p><p> 學號(8位): </p><p> 指導教師: </p><p><b> 設計起止時:</b></p><p><b> 一. 設計目的</b></p><p> 1學會圖的存儲、
3、圖的保存與讀取。</p><p> 2學會圖的深度遍歷和廣度遍歷。</p><p><b> 3學會圖的查找。</b></p><p> 4學會找圖的最短路徑、轉折點最少的路徑和所有路徑。</p><p><b> 二. 設計內容</b></p><p><b&
4、gt; 1界面。</b></p><p> 2圖的存儲、保存、及讀取。</p><p><b> 3圖的查找。</b></p><p> 4找圖重量景點之間的最短路徑、轉折點最少的路徑和所有路徑。</p><p><b> 三.概要設計</b></p><p
5、><b> 四.詳細設計</b></p><p> 1創(chuàng)建圖 createUDN(*G)</p><p> 調用函數(shù) LocateVertex() </p><p> 2查找景點 GetVertex(*G)</p><p> 調用函數(shù) map() </p><p>
6、3查找最短路徑 zdload(G*)</p><p> 調用函數(shù) AddList() LocateVertex() JoinList()</p><p> 4查找轉折點最少的路徑 zzdload(*G)</p><p> 調用了函數(shù) second() LocateVertex() InitStack() biao()</p&g
7、t;<p> 5查找兩景點間的所有路徑allload(*G)</p><p> 調用了函數(shù) biao() LocateVertex() fond()</p><p><b> 6函數(shù)調用</b></p><p> 7重點設//用鄰接矩陣存儲結構創(chuàng)建圖</p><p> int createU
8、DN(AdjMatrix *G)</p><p><b> {</b></p><p> int i,j,k,weight;</p><p> char name1[30],name2[30];</p><p> printf("請輸入定點數(shù)和弧數(shù):");</p><p&g
9、t; scanf("%d %d",&G->vexnum,&G->arcnum);</p><p> for(i=0;i<G->vexnum;i++)</p><p> for(j=0;j<G->vexnum;j++)</p><p> G->arcs[i][j].adj=INFIN
10、ITY;</p><p> for(i=0;i<G->vexnum;i++)</p><p><b> {</b></p><p> printf("輸入第%d個頂點信息",i+1);</p><p> printf("地點名:");</p>&l
11、t;p> scanf("%s",G->vertex[i].name);</p><p> flushall();</p><p> printf("簡介:");</p><p> scanf("%s",G->vertex[i].jianjie);</p><p&
12、gt; flushall();</p><p> printf("*********************************\n");</p><p><b> }</b></p><p> for(k=0;k<G->arcnum/2;k++)</p><p><b&
13、gt; {</b></p><p> printf("輸入第%d條弧的兩定點的地點名\n",k);</p><p> printf("第一個頂點名:");</p><p> scanf("%s",name1);</p><p> flushall();</
14、p><p> printf("第二個頂點名:");</p><p> scanf("%s",name2);</p><p> flushall();</p><p> printf("權值:");</p><p> scanf("%d"
15、;,&weight);</p><p> printf("********************************\n");</p><p> i=LocateVertex(G,name1);</p><p> j=LocateVertex(G,name2);</p><p> G->arcs
16、[i][j].adj=weight;</p><p> G->arcs[j][i].adj=G->arcs[i][j].adj;</p><p><b> }</b></p><p><b> return 1;</b></p><p><b> }</b>
17、</p><p><b> //合并線性表</b></p><p> SeqList JoinList(SeqList q,SeqList p)</p><p><b> {</b></p><p><b> int i;</b></p><p>
18、; for(i=1;i<=p.last;i++)</p><p><b> {</b></p><p><b> q.last++;</b></p><p> q.a[q.last]=p.a[i];</p><p><b> }</b></p>&
19、lt;p><b> return q;</b></p><p><b> }</b></p><p> //兩景點的最短路徑</p><p> void zdload(AdjMatrix *G)</p><p><b> {</b></p><
20、;p> int dist[MAX_VERTEX_NUM][MAX_VERTEX_NUM],i,j,k,p,q;</p><p> SeqList path[MAX_VERTEX_NUM][MAX_VERTEX_NUM];</p><p> char name1[30],name2[30];</p><p> for(i=0;i<G->vex
21、num;i++) </p><p> for(j=0;j<G->vexnum;j++)</p><p><b> {</b></p><p> // InitList(&path[i][j]);</p><p> path[i][j].last=-1;</p><p>
22、; dist[i][j]=G->arcs[i][j].adj;</p><p> if(dist[i][j]<INFINITY)</p><p><b> {</b></p><p> AddList(&path[i][j],i);</p><p> AddList(&path[i]
23、[j],j); </p><p><b> }</b></p><p><b> }</b></p><p> for(k=0;k<G->vexnum;k++)</p><p> for(i=0;i<G->vexnum;i++) </p><p
24、> for(j=0;j<G->vexnum;j++)</p><p> if(dist[i][j]>(dist[i][k]+dist[k][j]))</p><p><b> {</b></p><p> dist[i][j]=dist[i][k]+dist[k][j];</p><p>
25、 path[i][j]=JoinList(path[i][k],path[k][j]);</p><p><b> }</b></p><p><b> do{</b></p><p><b> biao();</b></p><p> printf("請輸
26、入要查找的開始地點:");</p><p> scanf("%s",name1);</p><p> flushall();</p><p> printf("請輸入要查找的結束地點:");</p><p> scanf("%s",name2);</p>
27、<p> flushall();</p><p> p=LocateVertex(G,name1);</p><p> q=LocateVertex(G,name2);</p><p> for(k=0;k<=path[p][q].last;k++)</p><p> printf("%s->&q
28、uot;,G->vertex[path[p][q].a[k]].name);</p><p> printf("end\n");</p><p><b> map();</b></p><p> printf("是否繼續(xù)查找? 1是 2否\n請選擇:");</p><
29、;p> scanf("%d",&i);</p><p> Sleep(1000);</p><p> system("cls");</p><p> }while(i==1);</p><p><b> }</b></p><p>
30、 五.測試數(shù)據(jù)及運行結果</p><p><b> 1.正常測試數(shù)據(jù)</b></p><p><b> 數(shù)據(jù)1</b></p><p><b> 運行結果</b></p><p><b> 數(shù)據(jù)2</b></p><p>&
31、lt;b> 運行結果</b></p><p><b> 數(shù)據(jù)3</b></p><p><b> 運行結果</b></p><p> 2.非正常測試數(shù)據(jù)(2組)及運行結果。</p><p><b> 數(shù)據(jù)1</b></p><p&
32、gt;<b> 運行結果</b></p><p><b> 運行結果</b></p><p><b> 數(shù)據(jù)3</b></p><p><b> 運行結果</b></p><p> 六.調試情況,設計技巧及體會</p><p
33、> 上機前應知道上機的內容,認真地把書上相關的內容弄懂,上機時應細心,不要犯一些小錯誤,因為一些小錯誤在實驗中很難發(fā)現(xiàn),實驗中會影響時間,例如:在scanf語句中忘記加、語句后忘加“;”、struct類型弄錯誤。同時也要看自己申請的空間,防止空間申請過大,程序無法運行。</p><p> 該程序實現(xiàn)了規(guī)定的必須要完成的功能,除此之外,還實現(xiàn)了其他的一些功能,例如:將鄰接矩陣打印輸出,增加新的景點和路線等
34、等。在今后的程序設計中,我會盡量使自己的程序更加完美。</p><p> 剛開始看到課程設計的題目時,我感覺沒有思路,很茫然。后來從圖書館里翻閱了相關資料和查看課本,才慢慢的理清頭緒。在編程的時候遇到了一些較難的問題后,通過認認真真的把圖章節(jié)的內容復習了一遍及問同學,對一些經(jīng)典的算法有了更深的理解,最后克服難題。</p><p> 最后,謝謝老師這周來對我們的認真指導,給我們釋疑解惑,
35、耐心的解答我們提出的問題,老師,謝謝您,您辛苦了!</p><p><b> 七.參考文獻</b></p><p> 1.C語言程序設計(第二版),王曙燕等,科學出版社,2008</p><p> 2..數(shù)據(jù)結構—C語言描述,耿國華,高等教育出版社2011</p><p> 八.附錄:源代碼(電子版)</p
36、><p> #include<stdio.h></p><p> #include<stdlib.h></p><p> #include<string.h> </p><p> #include<Windows.h></p><p> #include<co
37、nio.h></p><p> #define MAX_VERTEX_NUM 15</p><p> #define INFINITY 32768</p><p> int b[MAX_VERTEX_NUM ];</p><p> int visited[MAX_VERTEX_NUM];</p><p&g
38、t; typedef struct vexnode</p><p><b> {</b></p><p> char name[30];</p><p> char jianjie[150];</p><p><b> }vexnode;</b></p><p>
39、 typedef struct arcnode</p><p><b> {</b></p><p><b> int adj;</b></p><p><b> }arcnode;</b></p><p> typedef struct</p><
40、p><b> {</b></p><p> vexnode vertex[MAX_VERTEX_NUM];</p><p> arcnode arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM];</p><p> int vexnum,arcnum;</p><p> }AdjMat
41、rix;</p><p> typedef struct</p><p><b> {</b></p><p> int a[MAX_VERTEX_NUM];</p><p><b> int top;</b></p><p><b> }List;&l
42、t;/b></p><p> typedef struct SeqList</p><p><b> {</b></p><p> int a[MAX_VERTEX_NUM];</p><p><b> int last;</b></p><p><b&g
43、t; }SeqList;</b></p><p> /*void InitList(SeqList *L)</p><p><b> {</b></p><p> L->last=-1;</p><p><b> }*/</b></p><p>
44、 int AddList(SeqList *L,int x)</p><p><b> {</b></p><p> if(L->last==MAX_VERTEX_NUM-1)</p><p><b> return 0;</b></p><p> L->last++;</
45、p><p> L->a[L->last]=x;</p><p><b> return 1;</b></p><p><b> }</b></p><p> //void tuichu();</p><p> //void exit();</p>
46、;<p> void InitStack(List *s)</p><p><b> {</b></p><p> s->top=-1;</p><p><b> }</b></p><p> int push(List *s,int x)</p><
47、;p><b> {</b></p><p> if(s->top==MAX_VERTEX_NUM-1)</p><p><b> return 0;</b></p><p><b> s->top++;</b></p><p> s->a[s-
48、>top]=x;</p><p><b> return 1;</b></p><p><b> }</b></p><p> int pop(List *s)</p><p><b> {</b></p><p> if(s->t
49、op==-1)</p><p><b> return 0;</b></p><p><b> else</b></p><p><b> {</b></p><p><b> s->top--;</b></p><p&g
50、t;<b> return 1;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> //退出界面</b></p><p> void tuichu()</p><p&
51、gt;<b> {</b></p><p> Sleep(1000);</p><p> system("cls");</p><p> printf("\n\n\n\n\n\t\t╔══════════════════════╗\n");</p><p> printf
52、("\t\t║ ║\n");</p><p> printf("\t\t║ ****************************************** ║\n");</p><p> printf("\t\t║ *
53、 * ║\n");</p><p> printf("\t\t║ * * * * ║\n");</p><p> printf("\t\t║ * 導航結束 ¥ * ║\n&q
54、uot;);</p><p> printf("\t\t║ * * * ║\n");</p><p> printf("\t\t║ * * ║\n");</p><p>
55、 printf("\t\t║ * * * * ║\n");</p><p> printf("\t\t║ * ¥ 謝謝使用 * ║\n");</p><p> printf("\t\t║ * *
56、 * ║\n");</p><p> printf("\t\t║ * * ║\n");</p><p> printf("\t\t║ *****************************************
57、* ║\n");</p><p> printf("\t\t║ ║\n");</p><p> printf("\t\t╚══════════════════════╝\n");</p><p><b> }<
58、/b></p><p><b> //地圖</b></p><p> void map()</p><p><b> {</b></p><p> printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");</p>
59、<p> printf("┃ ┏━━━┓ ┏━━━━┓ ┏━━━┓ ┏━━━┓┃\n");</p><p> printf("┃ ┃行政樓┠═══┨ 大學生 ┠═╗ ┃體育場┃ ┃學生公┃┃\n");</p><p> printf("┃ ┗━┯━┛
60、 ┃活動中心┃ ╠═══╋━━━╋══┨寓區(qū)1 ┃┃\n");</p><p> printf("┃ ║ ┗━┯━━┛┏┷━━┓┃體育館┃ ┗━┯━┛┃\n");</p><p> printf("┃ ║ ┏━━┓ ║ ┃圖書館┃┗━┯━┛ ║ ┃\n
61、");</p><p> printf("┃┏━┓ ╟═┨噴泉┃ ║ ┗━┯━┛ ║ ║ ┃\n");</p><p> printf("┃┃正┃ ║ ┗━━┛ ║ ║ ║ ┏━┷━┓┃\n");</p><p
62、> printf("┃┃ ┣═╬═══════╬═════╬════╬════┨旭日苑┃┃\n"); </p><p> printf("┃┃ ┃ ║ ║ ║ ║ ┗━┯━┛┃\n");</
63、p><p> printf("┃┃門┃ ║ ║ ║ ║ ║ ┃\n");</p><p> printf("┃┗━┛ ║ ║ ║ ║ ║ ┃\n");</p>&
64、lt;p> printf("┃ ║ ║ ║ ┏━━╋━━┓ ║ ┃\n");</p><p> printf("┃ ┏┷━━┓ ┏━┷━┓ ║ ┃ 籃 ┃ 土 ┃ ┏━┷━┓┃\n");</p><p> printf("┃
65、 ┃教學樓┠══┨實驗樓┠═══╣ ┃ 球 ┃ 操 ┠═┨學生公┃┃\n");</p><p> printf("┃ ┗━━━┛ ┗━━━┛ ║ ┃ 場 ┃ 場 ┃ ┃ 寓區(qū)2┃┃\n");</p><p> printf("┃ ║
66、┗━━┻━━┛ ┗━┯━┛┃\n");</p><p> printf("┃ 東 ║ ┏━━┓ ║ ┃\n");</p><p> printf("┃ 北╋南 ┏━━┷━┓ ┃美食┃ ║
67、 ┃\n"); </p><p> printf("┃ 西 ┃ 澡堂 ┠═══┨廣場┠══╝ ┃\n");</p><p> printf("┃ ┗━━━━┛ ┗━━┛ ┃\n");<
68、/p><p> printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");</p><p><b> }</b></p><p><b> //各地點的序號</b></p><p> void biao()</p><
69、p><b> {</b></p><p> printf("┏━━━━━━━━━━━━┳━━━━━━━━━━━━━┓ \n");</p><p> printf("┃ 1正門 ┃ 2行政樓 ┃ \n");</p><p>
70、printf("┣━━━━━━━━━━━━╋━━━━━━━━━━━━━┫ \n");</p><p> printf("┃ 3噴泉 ┃ 4教學樓 ┃ \n");</p><p> printf("┣━━━━━━━━━━━━╋━━━━━━━━━━━━━┫ \n"
71、);</p><p> printf("┃ 5大學生活動中心 ┃ 6實驗樓 ┃ \n");</p><p> printf("┣━━━━━━━━━━━━╋━━━━━━━━━━━━━┫ \n");</p><p> printf("┃ 7圖書館
72、 ┃ 8澡堂 ┃ \n");</p><p> printf("┣━━━━━━━━━━━━╋━━━━━━━━━━━━━┫ \n");</p><p> printf("┃ 9體育場與體育館 ┃ 10土操場與籃球場 ┃ \n");</p><p
73、> printf("┣━━━━━━━━━━━━╋━━━━━━━━━━━━━┫ \n");</p><p> printf("┃ 11美食廣場 ┃ 12學生公寓區(qū)1 ┃ \n");</p><p> printf("┣━━━━━━━━━━━━╋━━━━━━━━━━━━━┫ \n&quo
74、t;);</p><p> printf("┃ 13旭日苑 ┃ 14學生公寓區(qū)2 ┃ \n");</p><p> printf("┗━━━━━━━━━━━━┻━━━━━━━━━━━━━┛ \n");</p><p><b> }</b></p
75、><p><b> //</b></p><p><b> //求頂點位置</b></p><p> int LocateVertex(AdjMatrix *G,char name[30])</p><p><b> {</b></p><p>
76、int j=0,k;</p><p> for(k=0;k<G->vexnum;k++)</p><p> if(strcmp(G->vertex[k].name,name)==0)</p><p><b> {</b></p><p><b> j=k;</b></
77、p><p><b> break;</b></p><p><b> }</b></p><p> return (j);</p><p><b> }</b></p><p> //用鄰接矩陣存儲結構創(chuàng)建圖</p><p>
78、; int createUDN(AdjMatrix *G)</p><p><b> {</b></p><p> int i,j,k,weight;</p><p> char name1[30],name2[30];</p><p> printf("請輸入定點數(shù)和弧數(shù):");</
79、p><p> scanf("%d %d",&G->vexnum,&G->arcnum);</p><p> for(i=0;i<G->vexnum;i++)</p><p> for(j=0;j<G->vexnum;j++)</p><p> G->arcs[i
80、][j].adj=INFINITY;</p><p> for(i=0;i<G->vexnum;i++)</p><p><b> {</b></p><p> printf("輸入第%d個頂點信息",i+1);</p><p> printf("地點名:");
81、</p><p> scanf("%s",G->vertex[i].name);</p><p> flushall();</p><p> printf("簡介:");</p><p> scanf("%s",G->vertex[i].jianjie);<
82、/p><p> flushall();</p><p> printf("*********************************\n");</p><p><b> }</b></p><p> for(k=0;k<G->arcnum/2;k++)</p>&
83、lt;p><b> {</b></p><p> printf("輸入第%d條弧的兩定點的地點名\n",k);</p><p> printf("第一個頂點名:");</p><p> scanf("%s",name1);</p><p> fl
84、ushall();</p><p> printf("第二個頂點名:");</p><p> scanf("%s",name2);</p><p> flushall();</p><p> printf("權值:");</p><p> scanf
85、("%d",&weight);</p><p> printf("********************************\n");</p><p> i=LocateVertex(G,name1);</p><p> j=LocateVertex(G,name2);</p><p&g
86、t; G->arcs[i][j].adj=weight;</p><p> G->arcs[j][i].adj=G->arcs[i][j].adj;</p><p><b> }</b></p><p><b> return 1;</b></p><p><b>
87、; }</b></p><p><b> //保存圖</b></p><p> save_inf(AdjMatrix *G)</p><p><b> {</b></p><p><b> int i,j;</b></p><p>
88、<b> FILE *fp;</b></p><p> if((fp=fopen("學校導游系統(tǒng).txt","wt"))==NULL)</p><p><b> {</b></p><p> printf("\n寫文件出錯,按任意鍵退出!");</p
89、><p><b> getch();</b></p><p><b> exit(1);</b></p><p><b> }</b></p><p> fprintf(fp,"%d %d\n",G->arcnum,G->vexnum);&l
90、t;/p><p> for(i=0;i<G->vexnum;i++)</p><p> fprintf(fp,"%s %s\n",G->vertex[i].name,G->vertex[i].jianjie);</p><p> for(i=0;i<G->vexnum;i++)</p><
91、p> for(j=0;j<G->vexnum;j++)</p><p> fprintf(fp,"%d ",G->arcs[i][j].adj);</p><p> printf("\n文件已保存,按任意鍵返回!");</p><p><b> getch();</b>&l
92、t;/p><p> fclose(fp);</p><p><b> }</b></p><p> //從制定磁盤中讀取信息并存入圖G</p><p> AdjMatrix *read_inf()</p><p><b> {</b></p><p
93、> AdjMatrix *G;</p><p><b> int i,j;</b></p><p><b> FILE *fp;</b></p><p> fp=fopen("學校導游系統(tǒng).txt","rt");</p><p> if(fp=
94、=NULL)</p><p><b> {</b></p><p> printf("\n讀文件出錯,按任意鍵退出!");</p><p><b> getch();</b></p><p><b> exit(1);</b></p>
95、<p><b> }</b></p><p> G=(AdjMatrix *)malloc(sizeof(AdjMatrix));</p><p> fscanf(fp,"%d %d",&G->arcnum,&G->vexnum);</p><p> for(i=0;i<
96、G->vexnum;i++)</p><p> fscanf(fp,"%s %s",G->vertex[i].name,G->vertex[i].jianjie);</p><p> for(i=0;i<G->vexnum;i++)</p><p> for(j=0;j<G->vexnum;j++)
97、</p><p> fscanf(fp,"%d",&G->arcs[i][j].adj);</p><p> fclose(fp);</p><p> printf("\n文件已讀出,按任意鍵返回!");</p><p><b> getch();</b>&l
98、t;/p><p> return G;</p><p><b> }</b></p><p><b> //景點查找</b></p><p> void GetVertex(AdjMatrix *G)</p><p><b> {</b><
99、/p><p> char name[30];</p><p> int i,p=0;</p><p><b> biao();</b></p><p> printf("輸入要查找的地點名:");</p><p> scanf("%s",name);&
100、lt;/p><p> flushall();</p><p> for(i=0;i<G->vexnum;i++)</p><p> if(strcmp(G->vertex[i].name,name)==0)</p><p><b> { </b></p><p><b
101、> p=1;</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> if(p==0)</b></p><p><b> {</b></p><
102、p><b> map();</b></p><p> printf("抱歉,您查找的地址不存在!");</p><p><b> }</b></p><p><b> else</b></p><p><b> { </b
103、></p><p><b> map();</b></p><p> printf("地點名:%s\n簡介:%s",G->vertex[i].name,G->vertex[i].jianjie) ; </p><p><b> }</b></p><p>
104、 printf("\n\n\n\n************************************");</p><p> printf("\n是否繼續(xù)查找? 1是 2否\n請選擇:");</p><p> scanf("%d",&i);</p><p><b> if
105、(i==1)</b></p><p><b> {</b></p><p> Sleep(10000);</p><p> system("cls");</p><p> GetVertex(G);</p><p><b> }</b>
106、;</p><p><b> } </b></p><p><b> //密碼登錄</b></p><p> void mima()</p><p><b> {</b></p><p> AdjMatrix G;</p><
107、;p><b> int i;</b></p><p> char m[7];</p><p> printf("請輸入六位數(shù)的密碼:");</p><p> for(i=0;i<6;i++)</p><p><b> {</b></p><
108、;p> m[i]=getch();</p><p> printf("*");</p><p><b> }</b></p><p> m[6]='\0';</p><p> Sleep(1000);</p><p> if(strcmp(m,
109、"123456")==0)</p><p><b> {</b></p><p> printf("\n\n\n\n\n\t\t ((`\'-\"``\"\"-\'`)) ");</p><p> printf("\n\t\t )
110、 - - ("); </p><p> printf("\n\t\t / (o _ o) \\");</p><p> printf("\n\t\t \\ ( 0 ) /");</p><p> printf("\n\t\t '-.._'=
111、39;_..-'_"); </p><p> printf("\n\t\t /`;#'#'#.-.#'#'#;`\\ "); </p><p> printf("\n\t\t\\_)) 密碼'#'正確((_/ ");</p><p> printf(&qu
112、ot;\n\t\t #. ☆ ☆ ☆ #" ); </p><p> printf("\n\t\t '#.歡迎進入 !.#' "); </p><p> printf("\n\t\t / '#. .#' \\ "); </p><p>
113、 printf("\n\t\t _\\ \\'#. .#'/ /_ ");</p><p> printf("\n\t\t (((___) '#' (___))) "); </p><p> Sleep(1000);</p><p> system("cls");
114、</p><p> printf("╔════════════════╗\n");</p><p> printf("║ ****************************** ║\n");</p><p> printf("║ * * ║\n&quo
115、t;);</p><p> printf("║ * 是否創(chuàng)建導游圖? * ║\n");</p><p> printf("║ * 1是 2否 * ║\n");</p><p> printf("║ *
116、 * ║\n");</p><p> printf("║ ****************************** ║\n");</p><p> printf("╚════════════════╝\n");</p><p> printf("請選擇:");</p>&
117、lt;p> scanf("%d",&i);</p><p><b> if(i==1)</b></p><p><b> {</b></p><p> createUDN(&G);</p><p> save_inf(&G);</p&
118、gt;<p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> Sleep(1000);</p><p> system("cls");</p>&
119、lt;p><b> tuichu();</b></p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p&
120、gt;<p> Sleep(1000);</p><p> system("cls");</p><p> printf("\n\n\n\t\t \\\\\\|/// "); </p><p> printf("\n\t\t \\\\ .-.- // ");
121、</p><p> printf("\n\t\t ( .@.@ ) ");</p><p> printf("\n\t\t+-------oOOo-----(_)-----oOOo---------+"); </p><p> printf("\n\t\t| |&
122、quot;);</p><p> printf("\n\t\t| 密碼輸入錯誤! 請重新輸入! |"); </p><p> printf("\n\t\t| |");</p><p> printf("\n\t\t+---------------------O
123、ooo------------+\n");</p><p><b> mima();</b></p><p><b> }</b></p><p><b> }</b></p><p> //求離第二個景點最近的點</p><p>
124、List *second(AdjMatrix *G,int i,int j,List *L2 )</p><p><b> {</b></p><p> int visit[MAX_VERTEX_NUM ],p,k;</p><p> List *L1,*L3;</p><p> L1=(List*)malloc
125、(sizeof(List));</p><p> InitStack(L1);</p><p> L3=(List*)malloc(sizeof(List));</p><p> InitStack(L3);</p><p> for(k=0;k<G->vexnum;k++)</p><p> v
126、isit[k]=INFINITY;</p><p><b> if(i==j)</b></p><p><b> {</b></p><p> push(L2,i);</p><p> return L2;</p><p><b> }</b>
127、</p><p><b> p=i;</b></p><p> visit[p]=p;</p><p> for(k=0;k<G->vexnum;k++)</p><p> if(G->arcs[p][k].adj<INFINITY )</p><p><b&
128、gt; { </b></p><p> visit[k]=k;</p><p><b> if(k==j)</b></p><p><b> {</b></p><p> push(L2,p);</p><p> return L2;</p>
129、;<p><b> }</b></p><p> while(L1->top!=-1)</p><p><b> {</b></p><p> push(L3,L1->a[L1->top]);</p><p><b> pop(L1);</b
130、></p><p><b> }</b></p><p> push(L1,k);</p><p> while(L3->top!=-1)</p><p><b> {</b></p><p> push(L1,L3->a[L3->top])
131、;</p><p><b> pop(L3);</b></p><p><b> }</b></p><p> /* if(k==j)</p><p><b> {</b></p><p> push(L2,j);</p>&l
132、t;p> push(L2,i);</p><p> return L2;</p><p><b> }*/</b></p><p><b> }</b></p><p><b> while(1)</b></p><p><b>
133、; { </b></p><p> p=L1->a[L1->top];</p><p> L1->top--;</p><p> for(k=0;k<G->vexnum;k++)</p><p> if(G->arcs[p][k].adj<INFINITY )</p>
134、;<p><b> {</b></p><p> if(visit[k]!=k)</p><p><b> {</b></p><p> visit[k]=k;</p><p> while(L1->top!=-1)</p><p><b&
135、gt; {</b></p><p> push(L3,L1->a[L1->top]);</p><p><b> pop(L1);</b></p><p><b> }</b></p><p> push(L1,k);</p><p> w
136、hile(L3->top!=-1)</p><p><b> {</b></p><p> push(L1,L3->a[L3->top]);</p><p><b> pop(L3);</b></p><p><b> }</b></p>
137、<p><b> if(k==j)</b></p><p><b> {</b></p><p> push(L2,p);</p><p> return L2;</p><p><b> }</b></p><p><b&g
138、t; }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> //求兩景點間轉折點最少的路徑</p><p> void zzdload(Ad
139、jMatrix *G)</p><p><b> {</b></p><p> List *L2;</p><p><b> int i,j;</b></p><p> char v1[30],v2[30];</p><p> L2=(List*)malloc(
140、sizeof(List));</p><p> InitStack(L2);</p><p><b> biao();</b></p><p> printf("輸入第一個景點名:");</p><p> scanf("%s",v1);</p><p&g
141、t; flushall();</p><p> printf("輸入第二個景點名:");</p><p> scanf("%s",v2);</p><p> flushall();</p><p> i=LocateVertex(G,v1);</p><p> j=L
142、ocateVertex(G,v2);</p><p> push(L2,j);</p><p> L2=second(G,i,j,L2);</p><p> while(L2->a[L2->top]!=i)</p><p> L2=second(G,i,L2->a[L2->top],L2);</p>
143、<p> printf("最少轉折點的路徑:");</p><p> for(L2->top;L2->top>-1;L2->top--)</p><p> {i=L2->a[L2->top];</p><p> printf("%s->",G->vertex
144、[i].name);</p><p><b> }</b></p><p> printf("end\n");</p><p><b> map();</b></p><p> printf("\n********************************
145、**********\n");</p><p> printf("是否繼續(xù)查找? 1是 2否\n請選擇:");</p><p> scanf("%d",&i);</p><p><b> if(i==1)</b></p><p><b>
146、; {</b></p><p> Sleep(1000);</p><p> system("cls");</p><p> zzdload(G);</p><p><b> }</b></p><p><b> }</b><
147、/p><p><b> //路徑輸出</b></p><p> void fond(AdjMatrix *G,int v0,int v1,int j,int k)</p><p><b> {</b></p><p><b> int n;</b></p>&
148、lt;p> visited[k]=1;</p><p> if(G->arcs[b[j]][v1].adj!=INFINITY)</p><p><b> {</b></p><p> for(n=0;n<=j;n++)</p><p><b> {</b></p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結構課程設計報告--校園導游系統(tǒng)
- 數(shù)據(jù)結構課程設計報告-- 校園導游系統(tǒng)
- 數(shù)據(jù)結構_校園導游系統(tǒng)課程設計
- 數(shù)據(jù)結構課程設計---校園導游系統(tǒng)
- 數(shù)據(jù)結構 校園導游系統(tǒng)課程設計
- 數(shù)據(jù)結構課程設計---校園導游系統(tǒng)設計
- 數(shù)據(jù)結構校園導游咨詢課程設計報告
- 校園導游咨詢系統(tǒng)-數(shù)據(jù)結構課程設計
- 數(shù)據(jù)結構課程設計---校園交通導游系統(tǒng)
- 校園導游咨詢系統(tǒng)---數(shù)據(jù)結構課程設計
- 數(shù)據(jù)結構課程設計——校園導游咨詢系統(tǒng)
- 數(shù)據(jù)結構課程設計報告-校園導游程序
- 數(shù)據(jù)結構課程設計報告-校園導游程序
- 數(shù)據(jù)結構課程設計報告-校園導游程序
- 數(shù)據(jù)結構課程設計報告--公園導游圖
- 數(shù)據(jù)結構課程設計報告-公園導游圖
- 數(shù)據(jù)結構課程設計報告-校園導游程序
- 數(shù)據(jù)結構課程設計--著名景點導游系統(tǒng)
- 數(shù)據(jù)結構課程設計--校園導游咨詢
- 數(shù)據(jù)結構課程設計-校園導游咨詢
評論
0/150
提交評論