深度遍歷和廣度遍歷(函式)

2021-09-22 16:25:23 字數 3989 閱讀 4883

mgraph是鄰接矩陣儲存的圖,定義如下:

#define maxvertexnum 10     

/*定義最大頂點數*/

typedef

int vertex;

/* 用頂點下標表示頂點,為整型 */

typedef

struct

mgraph;

/*用鄰接矩陣表示的圖的型別*/

裁判測試程式樣例:

#include

"stdio.h"

#include

"stdlib.h"

typedef

enum

boolean;

#define maxvertexnum 10

/*定義最大頂點數*/

typedef

int vertex;

/* 用頂點下標表示頂點,為整型 */

typedef

struct

mgraph;

/*用鄰接矩陣表示的圖的型別*/

boolean visited[maxvertexnum]

;/* 頂點的訪問標記 */

void

creatmgraph

(mgraph *g)

;/* 建立圖並且將visited初始化為false;裁判實現,細節不表 */

void

dfs(mgraph g,vertex v)

;int

main()

/* 你的**將被嵌在這裡 */

【**】
void

dfs(mgraph g, vertex v)

}

algraph是鄰接表儲存的圖,定義如下:

#define max_vertex_num 10      

/*定義最大頂點數*/

typedef

int vertex;

typedef

struct arcnodearcnode;

typedef

struct vnodevnode,adjlist[max_vertex_num]

;/*adjlist是陣列型別*/

typedef

struct

algraph;

/*圖型別*/

裁判測試程式樣例:

#include

"stdio.h"

#include

"stdlib.h"

#define max_vertex_num 10

/*定義最大頂點數*/

typedef

int vertex;

typedef

struct arcnodearcnode;

typedef

struct vnodevnode,adjlist[max_vertex_num]

;/*adjlist是陣列型別*/

typedef

struct

algraph;

/*圖型別*/

typedef

enum

boolean;

boolean visited[max_vertex_num]

;/*定義標誌向量,為全域性變數*/

void

creatalgraph

(algraph *g)

;/* 建立圖並且將visited初始化為false;裁判實現,細節不表 */

void

dfs(algraph *g,

int v)

;int

main()

/* 你的**將被嵌在這裡 */

【**】
void

dfs(algraph *g,

int v)

}

其中mgraph是鄰接矩陣儲存的圖,定義如下:

#define maxvertexnum 10     

/*定義最大頂點數*/

typedef

int vertex;

/* 用頂點下標表示頂點,為整型 */

typedef

struct

mgraph;

/*用鄰接矩陣表示的圖的型別*/

裁判測試程式樣例:

#include

"stdio.h"

#include

"stdlib.h"

typedef

enum

boolean;

#define maxvertexnum 10

/*定義最大頂點數*/

typedef

int vertex;

/* 用頂點下標表示頂點,為整型 */

typedef

struct

mgraph;

/*用鄰接矩陣表示的圖的型別*/

boolean visited[maxvertexnum]

;/* 頂點的訪問標記 */

void

creatmgraph

(mgraph *g)

;/* 建立圖並且將visited初始化為false;裁判實現,細節不表 */

void

bfs(mgraph g,vertex v)

;int

main()

/* 你的**將被嵌在這裡 */

【**】
void

bfs(mgraph g,vertex v)}}

}

algraph是鄰接表儲存的圖,定義如下:

#define max_vertex_num 10      

/*定義最大頂點數*/

typedef

int vertex;

typedef

struct arcnodearcnode;

typedef

struct vnodevnode,adjlist[max_vertex_num]

;/*adjlist是陣列型別*/

typedef

struct

algraph;

/*圖型別*/

裁判測試程式樣例:

#include

"stdio.h"

#include

"stdlib.h"

#define max_vertex_num 10

/*定義最大頂點數*/

typedef

int vertex;

typedef

struct arcnodearcnode;

typedef

struct vnodevnode,adjlist[max_vertex_num]

;/*adjlist是陣列型別*/

typedef

struct

algraph;

/*圖型別*/

typedef

enum

boolean;

boolean visited[max_vertex_num]

;/*定義標誌向量,為全域性變數*/

void

creatalgraph

(algraph *g)

;/* 建立圖並且將visited初始化為false;裁判實現,細節不表 */

void

bfs(algraph *g,

int v)

;int

main()

/* 你的**將被嵌在這裡 */

【**】
void

bfs(algraph *g,

int v)

p=p->nextarc;}}

}

深度遍歷和廣度遍歷

圖的遍歷,所謂遍歷,即是對結點的訪問。乙個圖有那麼多個結點,如何遍歷這些結點,需要特定策略,一般有兩種訪問策略 深度優先遍歷,從初始訪問結點出發,我們知道初始訪問結點可能有多個鄰接結點,深度優先遍歷的策略就是首先訪問第乙個鄰接結點,然後再以這個被訪問的鄰接結點作為初始結點,訪問它的第乙個鄰接結點。總...

XML的深度遍歷和廣度遍歷

深度遍歷 public void domdepthfirst xmlnode currentnode if currentnode.haschildnodes xmlnode node currentnode.firstchildnode while node null domdepthfirst ...

深度優先遍歷 和 廣度優先遍歷

圖的廣度優先搜尋是樹的按層次遍歷的推廣,它的基本思想是 首先訪問初始點vi,並將其標記為已訪問過,接著訪問vi的所有未被訪問過的鄰接點 vi1,vi2,vi t,並均標記已訪問過,然後再按照vi1,vi2,vi t的次序,訪問每乙個頂點的所有未被訪問過的鄰接點,並均標記為已訪問過,依次類推,直到圖中...