




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
軟件學院課程設計報告書課程名稱 數據結構設計題目 地鐵建設問題專業班級學 號姓 名指導教師2014年1月17日目錄1設計時間...............................錯誤!未定義書簽。2設計目的...............................錯誤!未定義書簽。3設計任務...............................錯誤!未定義書簽。4設計內容...............................錯誤!未定義書簽。總體設計.................................錯誤!未定義書簽。需求分析.................................錯誤!未定義書簽。詳細設計.................................錯誤!未定義書簽。測試與分析...............................錯誤!未定義書簽。測試.....................................錯誤!未定義書簽。分析.....................................錯誤!未定義書簽。附錄....................................錯誤!未定義書簽。5總結與展望.............................錯誤!未定義書簽。參考文獻.................................錯誤!未定義書簽。成績評定.................................錯誤!未定義書簽。設計時間2014年1月15日設計目的設計各轄區之間最短地鐵,使修建費用最少設計任務某城市要在各個轄區之間修建地鐵,由于地鐵建設費用昂貴,因此需要合理安排地鐵建設線路,使市民可以沿地鐵到達各個轄區,并使總費用最小。設計內容輸入各個轄區名稱和各轄區間直接距離(地鐵鋪設費用與距離成正比)。根據轄區距離信息,計算出應該在哪些轄區建立地鐵線路。輸出應該建設的地鐵線路及所需建設總里程。總體設計圖4-1算法圖需求分析(1)本程序設計計算城市內各轄區間修建地鐵的最短路程。(2)運行時,輸入轄區的名稱,各轄區之間用空格鍵隔開,以 #輸入結束。(3)輸入各轄區間距離時,先輸入兩轄區名稱,再輸入距離。(4)最后計算最短距離來得出最少費用。詳細設計采用鄰接矩陣存儲構造無向圖int creatgraph(Graph*g){int i=0,j,m,k,p;chara[10],b[10];printf( "請輸入所有的轄區,以
#為輸入結束標志
\n");scanf( "%s",g->V[i]);while(strcmp("#",g->V[i])!=0){i++;scanf( "%s",g->V[i]);}g->vexnum=i;for(i=0;i<g->vexnum;i++)for(j=0;j<g->vexnum;j++)g->R[i][j]=INFINITY;printf( "請輸入轄區和轄區之間的路程,以scanf( "%s%s%d",a,b,&m);
##為結束標志\n");while(strcmp("##",a)!=0||strcmp( "##",b)!=0||m!=0){k=locatevex(g,a);p=locatevex(g,b);if(k==-1){printf(return
"沒有%s這個轄區\n",a);0;}if(p==-1){printf(return
"沒有%s這個轄區\n",b);0;}g->R[k][p]=g->R[p][k]=m;scanf("%s%s%d",a,b,&m);}return 1;}普利姆算法生成最小樹struct
tree
owcost!=0){m=1;k=i;}if(m==1&&a[i].lowcost!=0){if(a[i].lowcost<a[k].lowcost)k=i;}}return k;}測試與分析測試圖4-1正確測試結果圖4-2錯誤測試結果分析調試時,在輸入數據時,再輸完數據后要再次按下空格鍵,再輸入結束符號才會結束本次輸入進入下一個輸入。且不能輸入與本次輸入無關的數據或者超出本次輸入限制的數據,否則顯示錯誤,將重新輸入。附錄#include<>#include<>#include<>#include<>#defineINFINITY10000#defineM20typedefstruct{charV[M][10];intR[M][M];intvexnum;}Graph;int locatevex(Graph *g,chara[10]){int i;for(i=0;i<g->vexnum;i++){if(strcmp(a,g ->V[i]) ==0)return i;}if(i==g->vexnum)return -1;}int creatgraph(Graph{
*g)int i=0,j,m,k,p;chara[10],b[10];printf( "請輸入所有的轄區,以#為輸入結束標志scanf( "%s",g->V[i]);while(strcmp("#",g->V[i]) !=0){
\n");i++;scanf( "%s",g->V[i]);}g->vexnum=i;for(i=0;i<g->vexnum;i++)for(j=0;j<g->vexnum;j++)g->R[i][j] =INFINITY;printf( "請輸入轄區和轄區之間的路程,以 ##為結束標志\n");scanf( "%s%s%d",a,b,&m);while(strcmp("##",a)!=0|| strcmp("##",b)!=0|| m!=0){k =locatevex(g,a);p =locatevex(g,b);if(k==-1){printf(return
"沒有%s這個轄區\n",a);0;}if(p==-1){printf(return
"沒有%s這個轄區\n",b);0;}g->R[k][p] =g->R[p][k] =m;scanf("%s%s%d",a,b,&m);}return 1;}struct tree owcost !=0){m=1;k=i;}if(m==1&&a[i] .lowcost!=0){if(a[i] .lowcost<a[k].lowcost)k=i;}}return k;}voidMiniSpanTree_PRIM(Graphg,{struct treeclosedge[M];int i,j,k,money =0;k=locatevex( &g,a);if(k==-1){
chara[10])printf(return
"沒有%s這個轄區,無法求解\n",a);0;}for(i=0;i<;i++){if(i!=k){closedge[i]closedge[i]}
.lowcost=[k][i];.weizhi=k;}closedge[k] .lowcost=0;for(i=1;i<;i++){=minimun(closedge,g);money+=closedge[k].lowcost;printf( "%d:%s%s%d\n",i,[closedge[k]
.weizhi],[k],closedge[k]
.lowcost);closedge[k] .lowcost=0;for(j=0;j<;j++){if[k][j] <closedge[j] .lowcost){closedge[j] .weizhi=k;closedge[j] .lowcost=[k][j];}}}printf( "總費用為:%d\n",money);}voidmain(){int i,k;Graphg;chara[10];printf("請選擇功能:1(鐵路建設)0(退出)\n");scanf("%d",&k);while(k){=creatgraph(&g);if(i){printf("請輸入從哪里開始:");scanf( "%s",a);MiniSpanTree_PRIM(g,a);}printf( "請選擇功能:1(鐵路建設)scanf( "%d",&k);
0(退出)\n");}}總結與展望本程序,本次編譯涉及數據結構最小生成樹以及圖的構造等編譯。先要構造結構體,在定義時應要注意盡量將賦值空間增大,以防止調試時輸入數據超出運算范圍。再進行函數的編譯調用,構造無向圖用鄰接矩陣進行存儲,這些編譯代碼,書上都有介紹,但不可盡抄,書上的只是一個模板,根據程序設計任務將變量進行修改,構造圖之后,運用最小生成樹原理,用普利姆算法對整個程序變量進行編譯,最后進入主函數,就直接調用函數進行運算輸入的數據,輸出運算結果。這次程序的編譯讓我對圖的遍歷理解的更加深入, 最小生成樹問題不僅可以運算本次程序對地鐵建造最少費用問題,更可以運用于一系列的最短距離等問題,解決甚多復雜問題!極其具有實用性!參考文獻[1]屈輝立,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司現金支取管理制度
- 公司落實安全管理制度
- 江蘇開放大學2025年春大學英語(A)復習題3參考答案
- 2025房產買賣合同與購房協議
- 河南省2024~2025學年 高二下冊第一次質量檢測數學試卷附解析
- 廣東省惠州市2024-2025學年高一下冊數學期末考試模擬卷附解析
- 神秘傳承的考驗基礎知識點歸納
- 產權顧問工作簡歷模板
- 社區社區服務社會學研究管理基礎知識點歸納
- 上饒市市直學校遴選教師筆試真題2024
- 2025年貴州貴安新區產業發展控股集團有限公司招聘筆試參考題庫附帶答案詳解
- 2023-2024學年廣東省深圳市羅湖區八年級下學期期末數學試題
- 神經損傷康復的未來趨勢與挑戰分析
- 宏觀經濟學知到智慧樹章節測試課后答案2024年秋浙江大學
- 火災解封申請書
- 國家安全青年有責
- 整體施工勞務服務方案
- DBJT13-119-2010 福建省住宅工程質量分戶驗收規程
- 2025年貴州盤江精煤股份有限公司招聘筆試參考題庫含答案解析
- GB/T 26718-2024城市軌道交通安全防范系統技術要求
- 馬工程《藝術學概論》課件424P
評論
0/150
提交評論