第十二周專案4 判斷頂點u到v是否有簡單路徑

2021-07-08 16:35:22 字數 2568 閱讀 5097

/*

* 檔名稱:專案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 ...