/*
* 檔名稱:專案3.cbp
* 作 者:孫欽達
* 完成日期:2023年12月1日
* 版 本 號:v1.0
* 問題描述:判斷頂點u到v是否有簡單路徑
* 輸入描述:無
* 程式輸出:測試資料
*/
#ifndef graph_h_included
#define graph_h_included
#define maxv 100 //最大頂點個數
#define inf 32767 //inf表示∞
typedef int infotype;
//以下定義鄰接矩陣型別
typedef struct
vertextype; //頂點型別
typedef struct //圖的定義
mgraph; //圖的鄰接矩陣型別
//以下定義鄰接表型別
typedef struct anode //弧的結點結構型別
arcnode;
typedef int vertex;
typedef struct vnode //鄰接表頭結點的型別
vnode;
typedef vnode adjlist[maxv]; //adjlist是鄰接表型別
typedef struct
algraph; //圖的鄰接表型別
//功能:由乙個反映圖中頂點鄰接關係的二維陣列,構造出用鄰接矩陣儲存的圖
//引數:arr - 陣列名,由於形式引數為二維陣列時必須給出每行的元素個數,在此將引數arr宣告為一維陣列名(指向int的指標)
// n - 矩陣的階數
// g - 要構造出來的鄰接矩陣資料結構
void arraytomat(int *arr, int n, mgraph &g); //用普通陣列構造圖的鄰接矩陣
void arraytolist(int *arr, int n, algraph *&); //用普通陣列構造圖的鄰接表
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
//int visited[maxv];
#endif // graph_h_included
#include#include "head.h"
int visited[maxv]; //定義存放節點的訪問標誌的全域性陣列
void existpath(algraph *g,int u,int v, bool &has)
p=g->adjlist[u].firstarc;
while (p!=null)
}void haspath(algraph *g,int u,int v)
int main()
, ,,,
,}; //請畫出對應的有向圖
arraytolist(a[0], 5, g);
haspath(g, 1, 0);
haspath(g, 4, 1);
return 0;
}
#include #include #include "head.h"
//功能:由乙個反映圖中頂點鄰接關係的二維陣列,構造出用鄰接矩陣儲存的圖
//引數:arr - 陣列名,由於形式引數為二維陣列時必須給出每行的元素個數,在此將引數arr宣告為一維陣列名(指向int的指標)
// n - 矩陣的階數
// g - 要構造出來的鄰接矩陣資料結構
void arraytomat(int *arr, int n, mgraph &g)
g->e=count;
}void mattolist(mgraph g, algraph *&g)
//將鄰接矩陣g轉換成鄰接表g
g->n=g.n;
g->e=g.e;
}void listtomat(algraph *g,mgraph &g)
//將鄰接表g轉換成鄰接矩陣g
}}void dispmat(mgraph g)
//輸出鄰接矩陣g
printf("\n");
}}
執行結果:
知識點總結:
簡單路徑的概念是路徑上的頂點不重複。採用深度優先遍歷的方法,從頂點u出發遍歷到頂點v。在程式中加入v和has兩個形參,其中has表示頂點u到v是否有路徑,若有就為true,否則為false。
第十二周專案(4)
煙台大學計算機學院 檔名稱 xiangmu.cpp 完成日期 2017年11月19日 問題描述 floyd演算法驗證 輸入描述 無 輸出描述 每對頂點最短路徑 用到了graph.h include include include graph.h define maxsize 100 void ppa...
第十二周 專案(4)
問題及描述 煙台大學計算機學院 檔名稱 xiangmu.cpp 完成日期 2017年11月19日 問題描述 floyd演算法驗證 輸入描述 無 輸出描述 每對頂點最短路徑 用到了graph.h include include include graph.h define maxsize 100 vo...
第十二周專案1 閱讀4
4 理解函式的預設引數 include using namespace std const double pi 3.1415926 float area float r 6.5 指定r的預設值為6.5 float volume float h,float r 6.5 指定r的預設值為6.5 int ...