图的习题-图的遍历-题目+代码+解析

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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章