第十三周專案 驗證演算法(3 Dijkstra演算法)

2021-07-24 20:47:48 字數 2557 閱讀 2069

問題及**:

/*

*檔名稱:1.cpp

*完成日期:2023年11月24日

*版本號:v1.0

*問題描述:執行dijkstra演算法,觀察結果並領會其原理及問題求解過程。

*輸入描述:無

*程式輸出:測試結果

*/

測試用圖:

#include #define maxv 100                   //定義最大頂點數100

#define inf 9999 //處理「無窮大」

typedef int infotype; //定義頂點與邊的相關資訊

typedef int vertex;

typedef struct //定義頂點型別

vertextype;

typedef struct //定義圖鄰接矩陣型別

mgraph;

typedef struct anode //定義邊節點型別

arcnode;

typedef struct vnode //定義鄰接表頭節點型別

vnode;

typedef vnode adjlist[maxv]; //adjlist: 鄰接表型別

typedef struct //定義圖鄰接表型別

algraph;

void arraytomat(int *arr, int n, mgraph &g); //用普通陣列構造圖的鄰接矩陣

void arraytolist(int *arr, int n, algraph *&g); //用普通陣列構造圖的鄰接表

void mattolist(mgraph g,algraph *&g); //將鄰接矩陣g轉換成鄰接表g

void listtomat(algraph *g,mgraph &g); //將鄰接表g轉換成鄰接矩陣g

void dispmat(mgraph g); //輸出鄰接矩陣g

void dispadj(algraph *g); //輸出鄰接表g

graph.cpp:

#include #include "graph.h"

//幾點說明:

//功能:由乙個反映圖中頂點鄰接關係的二維陣列,構造出用鄰接矩陣儲存的圖

//引數:arr - 陣列名,由於形式引數為二維陣列時必須給出每行的元素個數,在此將引數arr宣告為一維陣列名(指向int的指標)

// n - 矩陣的階數

// g - 要構造出來的鄰接矩陣資料結構

void arraytomat(int *arr, int n, mgraph &g) //用普通陣列構造圖的鄰接矩陣}}

g->e=edgenum;

}void mattolist(mgraph g,algraph *&g) //將鄰接矩陣g轉換成鄰接表g}}

g->n=g.n;

g->e=g.e;

}void listtomat(algraph *g,mgraph &g) //將鄰接表g轉換成鄰接矩陣g

}g.n=g->n;

g.e=g->e;

}void dispmat(mgraph g) //輸出鄰接矩陣g

printf("\n");}}

main.cpp:

#include #include #include "graph.h"

#define maxsize 100

void ppath(int path,int i,int v) //前向遞迴查詢路徑上的頂點

知識點總結:

dijkstra演算法

心得體會:

dijkstra演算法:應用於求一頂點到其餘頂點的最短路徑問題,向開始只含有源點v的集合中依次加入頂點u,且頂點u滿足u與v的距離最短。

需要指出的是:此演算法應用十分廣泛,如導航中的路徑規劃、機械臂路徑、貨郎擔問題、旅行商問題等。

第十三周專案 驗證演算法(3)

程式 檔名稱 1.cpp 完成日期 2016年12月1日 版本號 vc6.0 問題描述 dijkstra演算法的驗證 輸入描述 無 程式輸出 測試結果 include include include graph.h define maxsize 100 void ppath int path,int...

第十三周 專案 驗證演算法

檔名稱 main.cpp,btree.h,btree.cpp 版本號 code block 12.11 問題描述 1 prim演算法的驗證 使用圖1作為測試用例 標頭檔案 define maxv 100 最大頂點個數 define inf 32767 inf表示 typedef int infoty...

第十三周 專案一 驗證演算法

煙台大學計算機學院 完成日期 2017 11 28 問題描述 1.折半查詢 2.分塊查詢 3.二叉排序樹 1.include typedef int keytype typedef char infotype typedef struct rectype int binsearch rectype ...