2017-07-25 15:38:00
writer:pprp
在前一篇圖基於鄰接列表表示法的**加了一小部分,加了乙個dfs函式,visited[n]陣列
**如下:
#include usingnamespace
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 也就是去除沒有用...