圖的習題-圖的遍歷-題目+代碼+解析

21、
在這裏插入圖片描述

int visited[MaxSIZE]={0}//訪問標記數組,必須要有,並且是全局數據,初始化爲0
int Path_Dfs(ALGraph G,int i,int j){//採用鄰接表存儲的圖,
int p;
if(i==j)return 1;
else{
visited[i]=1;
for(p=FirstNeighbor(G,i);p>=0;p=NextNeighbor(G,i,p){
//p是i頂點第一個鄰接的頂點序號,nextneighbor是找出i節點在p後面的下一個零界點
if(!visited[k]&&path_dfs(g,p,j),//遞歸函數的參數就j是不變的
//i會變化,i就是每次遞歸訪問的節點,知道有一天和j相同了,說明訪問到了

return 1;
}
}
return 0
}

過程解析:
設i=1,j=5
1、visitedi=1;獲取i的第一個鄰接點序號2,2沒有訪問過,遞歸到2
2、visited2=1;獲取2的第一個,1被訪問過,獲取下一個3,遞歸到3
3、visited3=1;獲取3的第一個1,2,都被問過,獲取4,遞歸到4
4、visited4=1;獲取4的1,2,3都訪問過,獲取5,遞歸到5
5、i==j,
廣度優先遍歷
在這裏插入圖片描述

int visited[MAXSIZE]={0}//全局訪問標記數組
int BFS(ALGraph G,int i,int j){
initquene(Q);//創建隊列
enquene(Q,i)
for(p=FirstNei(G,i);p;p=NestNei(G,p,i){
k=p.adjvex;
if(k==j){return 1;}
if(!visited[k])euquene(Q,k)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章