版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
學(xué)生學(xué)號實驗課成績
忒隆理7大考
學(xué)生實驗報告書
實驗課程名稱數(shù)據(jù)結(jié)構(gòu)與算法綜合實驗
開課學(xué)院計算機科學(xué)與技術(shù)學(xué)院
指導(dǎo)教師姓名
學(xué)生姓名
學(xué)生專業(yè)班級
2022
2023
3學(xué)年第學(xué)期
實驗課程名稱:數(shù)據(jù)結(jié)構(gòu)與算法綜合實驗
實驗項目名稱圖與景區(qū)信息管理系統(tǒng)實踐報告成績
實驗者專業(yè)班級組別
同組者完畢日期2023年5月23日
第一部分:實驗分析與設(shè)計(可加頁)
一、實驗?zāi)康暮鸵?guī)定
1.目的
?掌握圖的定義和圖的存儲結(jié)構(gòu)。
?掌握圖的創(chuàng)建方法和圖的應(yīng)用
?使用C++語言,定義圖的數(shù)據(jù)結(jié)構(gòu),結(jié)合迭代開發(fā)思緒實現(xiàn)“景區(qū)信息管理系統(tǒng)”。
=掌握圖的兩種遍歷方法和應(yīng)用。
=使用C++語言和深度優(yōu)先算法實現(xiàn)“旅游景點導(dǎo)航”功能開發(fā)。
?掌握迪杰斯特拉算法和應(yīng)用。
?使用C++語言和迪杰斯特拉算法實現(xiàn)“搜索最短途徑”功能開發(fā)。
?理解最小生成樹的概念,掌握普里姆算法和應(yīng)用。
=使用C++語言和最小生成樹算法實現(xiàn)“鋪設(shè)電路規(guī)劃”功能開發(fā)。
2.規(guī)定
=開發(fā)景區(qū)信息管理系統(tǒng),對景區(qū)的信息進行管理。
?使用圖的數(shù)據(jù)結(jié)構(gòu)來保存景區(qū)景點信息,為用戶提供創(chuàng)建圖、查詢景點信息、旅
游景點導(dǎo)航、搜索最短途徑、鋪設(shè)電路規(guī)劃等功能。
二、分析與設(shè)計
(1)創(chuàng)建工程讀取文獻信息,創(chuàng)建圖,輸出周邊景點信息讀取景區(qū)信息文獻,采用
圖的存儲結(jié)構(gòu),創(chuàng)建景區(qū)景點圖,查詢景點信息。
(2)迭代開發(fā),進行深度優(yōu)先搜索,實現(xiàn)旅游景點導(dǎo)航。
⑶繼續(xù)迭代,采用迪杰斯特拉算法、普里姆算法,實現(xiàn)搜索最短途徑和電路鋪
設(shè),開發(fā)景區(qū)信息管理系統(tǒng)。
1.數(shù)據(jù)結(jié)構(gòu)的設(shè)計
?記錄頂點信息的結(jié)構(gòu)體
structVex
{
。intnum;〃景點編號
。charname[20];〃景點名字
。chardesc[1024];//景點介紹
};
=記錄邊的信息的結(jié)構(gòu)體
structEdge
(
intvexl;〃邊的第一個頂點
。intvex2;〃邊的第二個頂點
intweight;//權(quán)值
};
=用來保存途徑的鏈表的結(jié)構(gòu)體
typedefstructPath
{
intvexs[20];〃保存一條途徑
。Path*next;
}*PathList;
?CGraph類用來實現(xiàn)相應(yīng)功能的方法
classCGraph
(
private:
。intm_aAdjMatrix[20][20];//鄰接矩陣
。Vexm_aVexs[20];〃頂點信息數(shù)組
。intmnVexNum;〃當(dāng)前圖的頂點個數(shù)
public:
voidTnit(void);
。boolInsertVex(VexsVex);
boolInsertEdge(EdgesEdge);
VexGetVex(intnVex);
。intGetVexnum(void);
。intFindEdge(intnVex,EdgeaEdge[]);
voidDFS(intnVex,boo1aVisited[],int&nIndex,PathList&pList);
。voidDFSTraverse(intnVex,PathList&pList);
intFindShortPath(intnVexStart,intnVexEnd,EdgeaPath[]);
voidFindMinTree(EdgeaPath口);
);
2.核心算法設(shè)計
(1)輸出周邊景點信息
Input:操作表號與景點編號
Output:輸入景點的周邊景點信息
Process:
intCGraph::FindEdge(int.nVex,EdgeaEdge[])
(
0
。intk=0;
for(inti=0;i<m_nVexNum;i++)
(
if(m_aAdjMatrix[nVex][i]!=0)
0{
。aEdge[k].vexl=nVex;
t>。aEdge[k].vex2=i;
。aEdge[k].weight=m_aAdjMatrix[nVex][i];
。k++;
°}
)
。returnk;〃返回邊的條數(shù)
)
(2)深度優(yōu)先搜索算法實現(xiàn)旅游景點導(dǎo)航
Input:操作表號與景點編號
Output:從輸入景點出發(fā)走遍整個景區(qū)的各種路線方案
Process:
voidCGraph::DFS(intnVex,boo1aVisited口,int&nTndex,PathList&pList)
(
oaVisited[nVex]=true;〃改為已訪問
。pList->vexs[nlndex++]=nVex;//訪問頂點
?!ㄅ袛嗍欠袼泄?jié)點都已訪問過
intnVexNum=0;
ofor(inti=0;i<mnVexNum;i++)
(
oif(aVisited[i])nVexNum++;
6)
。?!ㄋ许旤c都被訪問過
。if(nVexNum==m_nVexNum)
(
〃新增鏈表節(jié)點,保存本次遍歷的途徑
。pList->next=(PathList)malloc(sizeof(Path));
ofor(inti=0;i<m_nVexNum;i++)
00{
pList->next->vexs[i]=pList->vexs[i];
。}
。pList=pList—>next;
。opList->next=NULL;
。)
e1se
6{
。//按頂點的存儲順序,查找當(dāng)前頂點相連的的頂點
for(inti=0;i<mnVexNum;i++)
(
。〃既沒有遍歷過,又與當(dāng)前頂點相連的頂點
。。。if(!aVisited[i]&&(m_aAdjMatrix[nVex][i]>0))
。(
。。?!ㄒ栽擁旤c為起點遍歷剩下的頂點
。DFS(i,aVisited,nlndex,pList);
。。。。aVisited[i]:false;〃訪問狀態(tài)置空
。o。nIndex—;〃回溯
00)
voidCGraph::DFSTraverse(intnVex,PathList&pList)
{
。intn!ndex=0;
boo1aVisited[MAX_VERTEX_NUM]={false);
DFS(nVex,aVisited,nlndex,pList);
}
(3)Dijkstra算法搜索最短途徑
Input:操作表號與起始景點編號
Output:從起始頂點到終點的最短途徑
Process:
intCGraph::FindShortPath(intnVexStart,intnVexEnd,EdgeaPath[])
{
intnShortPath[MAX_VERTEX_NUM][MAX.VERTEX_NUM];//保存最短途徑
intnShortDistance[MAX?VERTEXNUM];//保存最短距離
boo1aVisited[MAX_VERTEX_NUM];//判斷某頂點是否已經(jīng)加入到最短途徑
。//初始化
。intv;
。for(v=0;v<mnVexNum;v++)
。(
。。aVisited[v]=false;
。if(m_aAdjMatrix[nVexStart][v]!=0)
//初始化該頂點到其他頂點的最短距離,默認為兩點間的距離
。nShortDistance[v]=m_aAdjMatrix[nVexStart][v];
。e1se
?!偃珥旤ci和nVexStart不相連,則最短距離設(shè)為最大值
nShortDistanee[v]=0x7FFFFFFF;
。nShortPath[v][0]=nVexStart;//起始點為nVexStart
for(int1;j<m_nVexNum;j++)
nShortPath[v][j]=-1;〃初始化最短途徑
)
//初始化,nVexStart頂點加入到集合中
aVisited[nVexStart]=true;
。intmin;
for(inti=l;i<m_nVexNum;i++)
0{
。。min=0x7FFFFFFF;
。boo1bAdd二false;〃判斷是否尚有頂點可以加入到集合中
ofor(intj=0;j<mnVexNum;j++)
。(
t>ooif(aVisited[j]—false)
00(
。oif(nShortDistance[j]<min)
°{
。。。。v二j;〃j頂點離nVexSlarl頂點最近
。。。min=nShortDistance[j];〃)到門丫exStart的最短距離為min
。。bAdd=true;
000)
6001
。}//假如沒有頂點可以加入到集合,則跳出循環(huán)
oif(bAdd==fa1se)
00{
?break;
)
。aVisited[v>true;//將頂點j加入到集合
nShortPath[v][i]=v;//將頂點j保存到nVexStart到j(luò)的最短途徑里
t>for(intw=0;w<mnVexNum;w++)
(
//將w作為過度頂點計算rWexStart通過w到每個頂點的距離
。if(aVisited[w]==false&&(min+m_aAdjMatrix[v][w]<nShortDistance_a
AdjMatrix[v][w]!=0)
000(
?!ǜ庐?dāng)前最短途徑及距離
。。。nShortDistance[w]=min+m_aAdjMatrix[v][w];
。。for(inti=0;i<m_nVexNum;i++)
0oo(
。。。?!偃缤ㄟ^W到達頂點i的距離比較短,則將W的最短途徑復(fù)制給i
。onShortPath[w][i]=nShortPath[v][i];
0Of
00)
。)
)
intnlndex=0;
。intnVexl=nVexStart;
//將最短途徑保存為邊的結(jié)構(gòu)體數(shù)組
for(inti=l;i<m_nVexNum;i++)
oif(nShortPath[nVexEnd][i]!=-l)
。(
aPath[nIndex].vex1=nVex1;
aPath[nIndex].vex2=nShortPath[nVexEnd][i];
oaPath[nlndex].weight=m_aAdjMatrix[aPath[nlndex].vexl][aPath[nlnd
ex].vex2];
。。nVexl=nShortPath[nVexEnd][i];
。nlndex++;
。)
。)
t>returnnIndex;
)
(4)普里姆算法構(gòu)建最小生成樹
Input:輸入操作編號
Output:得到最小生成樹的途徑
Process:
voidCGraph::FindMinTree(EdgeaPath[])
(
boolaVisited[MAX_VERTEX_NUM];〃判斷某頂點是否在最小生成樹頂點集合里
。for(inti=0;i<MAX_VERTEX_NUM;i++)
{
。aVisited[i]=false;
b}
。aVisited[0]=true;〃。頂點加入到集合中
。intmin;
。intnVexl,nVex2;
。for(intk=0;k<mnVexNum-1;k++)
(
。min=0x7FFFFFFF;
。for(inti=0;i<m_nVexNum;i++)
00{
if(aVisited[i])〃從集合中取一個頂點
。(
。for(intj=0;j<m_nVexNum;j+4-)
d0{
。。if(!aVisited[j])〃從不在集合的頂點中取出一個頂點
00{
。3if((m_aAdjMatrix[i][j]<min)&&(m_aAdjMatrix[i][j]!=0))
0a(
o。。nVexl=i;
。ooonVex2=j;
。o。。。min=m_aAdjMatrix[i][j];〃找出最短的邊
6bO}
6)
00}
0}o
//保存最短邊的兩個頂點
aPath[k].vexl=nVexl;
aPath[k].vex2=nVex2;
aPath[k].weight=m_aAdjMatrix[nVexl][nVex2];
〃將兩個頂點加入到集合
。aVisited[nVexl]=true;
aVisited[nVex2]=true;
3.測試用例設(shè)計
?使用實驗所規(guī)定的圖創(chuàng)建兩個文本文獻,對文獻進行讀取,觀測其相關(guān)功能的實
現(xiàn)。
三、重要儀器設(shè)備及耗材
1.安裝了Windows10或其它版本的Windows操作系統(tǒng)的PC機1臺
2.PC機系統(tǒng)上安裝了MicrosoftVisualStudio2023開發(fā)環(huán)境
第二部分:實驗過程和結(jié)果(可加頁)
一、實現(xiàn)說明
使用MircosoftVisua1Studio2023開發(fā)工具,創(chuàng)建一個空的控制
臺工程。運用圖的存儲結(jié)構(gòu)來保存景區(qū)景點圖,使用C++語言開發(fā)景區(qū)信息管理系
統(tǒng),工程名為GraphCPro。
(1)添加Graph,h文獻,用來定義圖的數(shù)據(jù)結(jié)構(gòu),實現(xiàn)圖的相關(guān)操作。
(2)添加Tourism.h文獻,用來實現(xiàn)景區(qū)信息管理系統(tǒng)的相關(guān)功能。Touri
sm.h存放與Tourism.cpp相關(guān)函數(shù)的數(shù)據(jù)類型的定義,函數(shù)原型的聲明等。
(3)添加Main.cpp文獻,在文獻中創(chuàng)建程序入口函數(shù)intmain(void)o
調(diào)用Tourism.h中的相關(guān)函數(shù)實現(xiàn)相應(yīng)功能。
二、調(diào)試說明(調(diào)試手段、過程及結(jié)果分析)
調(diào)試的重要內(nèi)容為編寫程序的語法對的性與否,程序邏輯的對的性與否。
調(diào)試手段重要采用了MircosoftVisualStudio2023集成開發(fā)環(huán)境中
的“開始執(zhí)行(Ctrl+F5)”運營并測試,和Fl1“逐語句調(diào)試”、F12“逐過程
調(diào)試”、F9“切換斷點”、ctrl+B“新建斷點”等。
三、軟件測試(測試效果.界面、綜合分析和結(jié)論)
1.測試效果界面
-A
區(qū)O-
-BI區(qū)
-CI區(qū)
區(qū)
-D田I
區(qū)
田
區(qū)
Nh
-G_I-
>V27^^
V0->56oo
Voo
V0->V41o
>61oo
V0-Vooo
V1->V21ooO
V1->V34oo
V2->V43oo
V3->V64oo
V3->V56oo
V4->V65oo
V5-
語輸入選項(0~5):2
否而景點信息
)—A區(qū)
1—B區(qū)
2—C區(qū)
3—D區(qū)
工一E區(qū)
5—F區(qū)
5―G區(qū)
清輸入想要杏詢的景點編號:3
)區(qū)
風(fēng)景優(yōu)美,景色宜人
---------周邊景區(qū)--------
)區(qū)->(:區(qū)400m
)l1->Elg300m
)區(qū)一二區(qū)400m
===============旅游景點導(dǎo)航==============
0-A區(qū)
1-B區(qū)
2-C區(qū)
3-D區(qū)
4-E區(qū)
5-F
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 健康的心態(tài)與職業(yè)發(fā)展
- 倉庫堆垛貨物的防火措施
- 2025年度高端門窗安裝與室內(nèi)空氣品質(zhì)改善合同4篇
- 2023九年級道德與法治下冊 第三單元 走向未來的少年 第六課 我的畢業(yè)季第1課時 學(xué)無止境說課稿 新人教版
- 2025年度新材料研發(fā)與應(yīng)用場咨詢服務(wù)合同4篇
- 2025年度O2O新能源儲能技術(shù)合作框架協(xié)議3篇
- 2025年磁性電話簿行業(yè)深度研究分析報告
- 2025年紅外中繼器行業(yè)深度研究分析報告
- 12家鄉(xiāng)的喜與憂(說課稿)-統(tǒng)編版道德與法治四年級下冊
- 2023八年級數(shù)學(xué)上冊 第12章 一次函數(shù)12.2 一次函數(shù)第3課時 用待定系數(shù)法求一次函數(shù)的表達式說課稿 (新版)滬科版
- 餐飲行業(yè)智慧餐廳管理系統(tǒng)方案
- 2025年度生物醫(yī)藥技術(shù)研發(fā)與許可協(xié)議3篇
- 電廠檢修安全培訓(xùn)課件
- 殯葬改革課件
- 2024企業(yè)答謝晚宴會務(wù)合同3篇
- 雙方個人協(xié)議書模板
- 車站安全管理研究報告
- 瑪米亞RB67中文說明書
- 中華人民共和國文物保護法
- 五年級數(shù)學(xué)(小數(shù)四則混合運算)計算題專項練習(xí)及答案
- NB_T 10533-2021 采煤沉陷區(qū)治理技術(shù)規(guī)范_(高清最新)
評論
0/150
提交評論