编号j)间是否有路径,如有,则输出。{inttop=0,stack[];//stack是存放顶点编号的栈visited[i]=1;//visited数组在进入dfs前已初始化。stack[++top]=i;p=g[i].firstarc;/求第一个邻接点.while(p){if(p->adjvex==j){stack[++top]=j;printf("顶点vi和vj的路径为:\n");for(i=1;i<=top;i++)printf("%4d",stack[i]);exit(0);}//ifelseif(visited[p->adjvex]==0){dfs(g,g->adjvex);top--;p=p->next;}//elseif}//while}//结束算法2算法3:本题用非递归算法求解。intConnectij(AdjListg,vertypevi,vj)//判断n个顶点以邻接表表示的有向图g中,顶点Vi各Vj是否有路径,有则返回1,否则返回0。{for(i=1;i<=n;i++)visited[i]=0;//访问标记数组初始化。i=GraphLocateVertex(g,vi);//顶点定位,不考虑vi或vj不在图中的情况。j=GraphLocateVertex(g,vj);intstack[],top=0;stack[++top]=i;while(top>0){k=stack[top--];p=g[k].firstarc;while(p!=null&&visited[p->adjvex]==1)p=p->next;//查第k个链表中第一个未访问的弧结点。if(p==null)top--;else{i=p->adjvex;if(i==j)return(1);//顶点vi和vj间有路径。else{visited[i]=1;stack[++top]=i;}//else