DFS 深度搜尋 基於鄰接列表表示法

2022-03-16 13:18:48 字數 641 閱讀 5896

2017-07-25 15:38:00

writer:pprp

在前一篇圖基於鄰接列表表示法的**加了一小部分,加了乙個dfs函式,visited[n]陣列

**如下:

#include using

namespace

std;

const

int n = 9

;int visited[n] = ; //

新引入乙個陣列,用於標記是否訪問過

struct

node

;node head[n];

void create(int node1,int node2)//

通過起點和終點的值建立乙個鄰接表

}void dfs(int

vertex)

}void

print()

cout

<}

}int

main()

while(1

)

cout

<< "

鄰接表為:

"

dfs(1);

cout

<<"\n"

}

DFS 基於鄰接表

include using namespace std define maxvnum 100 頂點最大數 bool visited maxvnum 訪問標誌陣列,其初值預設為 false typedef char vextype 頂點的資料型別 typedef struct adjnode adjn...

鄰接表的深度搜尋 DFS 和廣度搜尋 BFS

圖是一種比樹更複雜的資料結構,常見的遍歷方式無非兩種 深度搜尋 優先深度掃瞄,如果當前路徑走到了死胡同,那麼,又依次訪問上次訪問過的節點的可走路徑。就這樣如此往復,最終完成圖的遍歷。深度搜尋類似於樹的前序遍歷 廣度搜尋 優先廣度掃瞄,假設你前面現在有n條路可走,ab n,那麼先把ab n的所有節點訪...

深度優先搜尋DFS

作為搜尋演算法的一種,dfs對於尋找乙個解的 np 包括npc 問題作用很大。但是,搜尋演算法畢竟是 時間複雜度是o n 的階乘級演算法,它的效率比較低,在資料規模變大時,這種演算法就顯得力不從心了。關於深度優先搜尋的效率問題,有多種解決方法。最具有通用性的是剪枝 prunning 也就是去除沒有用...