




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
C++實現(xiàn)Dijkstra算法完整代碼標題:C++實現(xiàn)Dijkstra算法完整代碼關(guān)鍵詞:Dijkstra算法代碼,Dijkstra算法,Dijkstra算法實現(xiàn)#ineludeviostream>#ineludevlimits>usingnamespaeestd;structNode{〃定義表結(jié)點intadjvex;〃該邊所指向的頂點的位置intweight;//邊的權(quán)值Node*next;〃下一條邊的指針};structHeadNode{//定義頭結(jié)點intnodeName;//頂點信息intinDegree;//入度intd;〃表示當前情況下起始頂點至該頂點的最短路徑,初始化為無窮大boolisKnown;〃表示起始頂點至該頂點的最短路徑是否已知,true表示已知,false表示未知intparent;〃表示最短路徑的上一個頂點Node*link;〃指向第一條依附該頂點的邊的指針};//G表示指向頭結(jié)點數(shù)組的第一個結(jié)點的指針〃nodeNum表示結(jié)點個數(shù)//areNum表示邊的個數(shù)voidcreateGraph(HeadNode*G,intnodeNum,intareNum){eoutvv"開始創(chuàng)建圖("vvnodeNumvv","vvareNumvv")"vvendl;〃初始化頭結(jié)點for(inti=0;ivnodeNum;i++){G[i].nodeName=i+1;〃位置0上面存儲的是結(jié)點v1,依次類推G[i].inDegree=0;〃入度為0G[i].link=NULL;}for(intj=0;jvareNum;j++){intbegin,end,weight;eoutvv"請依次輸入起始邊結(jié)束邊權(quán)值:";ein>>begin>>end>>weight;//創(chuàng)建新的結(jié)點插入鏈接表
Node*node=newNode;node->adjvex=end-1;node->weight=weight;++G[end-1].inDegree;〃入度加1〃插入鏈接表的第一個位置node->next=G[begin-1]」ink;G[begin-1]」ink=node;}}voidprintGraph(HeadNode*G,intnodeNum){for(inti=0;i<nodeNum;i++){cout<<"結(jié)點v"<<G[i].nodeName<<"的入度為";cout<<G[i].inDegree<<",以它為起始頂點的邊為:";Node*node=G[i].link;while(node!=NULL){cout<<"v"<<G[node->adjvex].nodeName<<"(權(quán):"<<node->weight<<")"<<II")"<<IInode=node->next;}cout<<endl;〃得到begin->end權(quán)重intgetWeight(HeadNode*G,intbegin,intend){Node*node=G[begin-1]」ink;while(node){if(node->adjvex==end-1){returnnode->weight;}node=node->next;}}〃從start開始,計算其到每一個頂點的最短路徑voidDijkstra(HeadNode*G,intnodeNum,intstart){〃初始化所有結(jié)點for(inti=0;i<nodeNum;i++){G[i].d=INT_MAX;〃到每一個頂點的距離初始化為無窮大G[i].isKnown=false;//到每一個頂點的距離為未知數(shù)}G[start-1].d=0;〃到其本身的距離為0G[start-1].parent=-1;〃表示該結(jié)點是起始結(jié)點while(true){//====如果所有的結(jié)點的最短距離都已知,那么就跳出循環(huán)intk;boolok=true;〃表示是否全部okfor(k=0;k<nodeNum;k++){〃只要有一個頂點的最短路徑未知,ok就設置為falseif(!G[k].isKnown){ok=false;break;}}if(ok)return;//==========================================//====搜索未知結(jié)點中d最小的,將其變?yōu)閗nown//====這里其實可以用最小堆來實現(xiàn)inti;intminlndex=-1;for(i=0;i<nodeNum;i++){if(!G[i].isKnown){if(minlndex==-1)minlndex=i;elseif(G[minlndex].d>G[i].d)minlndex=i;}}//===========================================cout<<"當前選中的結(jié)點為:v"<<(minlndex+1)<<endl;G[minlndex].isKnown=true;〃將其加入最短路徑已知的頂點集//將以minlndex為起始頂點的所有的d更新Node*node=G[minlndex].link;while(node!=NULL){intbegin=minlndex+1;intend=node->adjvex+1;intweight=getWeight(G,begin,end);if(G[minlndex].d+weight<G[end-1].d){G[end-1].d=G[minlndex].d+weight;G[end-1].parent=minlndex;〃記錄最短路徑的上一個結(jié)點}node=node->next;}}}〃打印到end-1的最短路徑voidprintPath(HeadNode*G,intend){if(G[end-1].parent==-1){cout<<"v"<<end;}elseif(end!=0){printPath(G,G[end-1].parent+1);//因為這里的parent表示的是下標,從0開始,所以要加1cout<<"->v"<<end;}}intmain(){HeadNode*G;intnodeNum,arcNum;cout<<"請輸入頂點個數(shù),邊長個數(shù):";cin>>nodeNum>>arcNum;G=newHeadNode[nodeNum];createGraph(G,nodeNum,arcNum);cout<<"============================="<<endl;cout<<"下面開始打印圖信息…"<<endl;printGraph(G,nodeNum);cout<<"============================="<<endl;cout<<"下面開始運行dijkstra算法..."<<endl;Dijkstra(G,nodeNum,1);cout<<"==================
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB31/ 579-2011鞋內(nèi)安全檢測儀通用技術(shù)要求
- DB31/ 329.16-2012重點單位重要部位安全技術(shù)防范系統(tǒng)要求第16部分:港口、碼頭
- 2024年數(shù)控超精密磨床資金需求報告代可行性研究報告
- 故事代替道理:《請不要跟我說“你的秘密”》
- 離婚協(xié)議簽訂與律師見證及子女撫養(yǎng)權(quán)執(zhí)行協(xié)議
- 高性能國際定向越野比賽GPS追蹤器租賃與賽事執(zhí)行合同
- 文化創(chuàng)意產(chǎn)業(yè)股權(quán)置換與品牌推廣協(xié)議
- 抖音內(nèi)容創(chuàng)作者違約金協(xié)議范本及違約處理
- 藝術(shù)Loft公寓車位購買及贈送藝術(shù)裝飾合同
- 房產(chǎn)處分權(quán)與土地使用權(quán)變更協(xié)議
- 2025年農(nóng)村個人果園承包合同
- 湖北省武漢市2025屆高三年級五月模擬訓練試題數(shù)學試題及答案(武漢五調(diào))
- 醫(yī)師掛證免責協(xié)議書
- 2025年數(shù)控技術(shù)專業(yè)畢業(yè)考試試題及答案
- 濟南民政離婚協(xié)議書
- 車牌租賃協(xié)議和抵押合同
- 2025年內(nèi)蒙古自治區(qū)初中學業(yè)水平考試數(shù)學模擬試題 (一)(含答案)
- 四川?。拼笥嶏w大數(shù)據(jù))2025屆高三第二次教學質(zhì)量聯(lián)合測評生物試題及答案
- 《綠色建筑施工培訓課件》資料
- GA 1812.3-2024銀行系統(tǒng)反恐怖防范要求第3部分:印鈔造幣企業(yè)
- 【公開課】+滑輪-人教版(2024)初中物理八年級下冊
評論
0/150
提交評論