永发信息网

假设图G采用邻接表存储,设计一个算法,输出图G中从顶点u到v的所有简单路径.

答案:2  悬赏:10  手机版
解决时间 2021-03-03 19:53
  • 提问者网友:ミ烙印ゝ
  • 2021-03-02 21:09
假设图G采用邻接表存储,设计一个算法,输出图G中从顶点u到v的所有简单路径.
最佳答案
  • 五星知识达人网友:轻雾山林
  • 2021-03-02 21:26
#include stdio.h#define MAX 5typedef struct ArcNode{\x09\x09int adjvex; \x09struct ArcNode *next; }ArcNode;typedef struct VNode{\x09\x09int data; \x09ArcNode *firstarc; }VNode;int visited[5]={0,0,0,0,0};\x09//标记数组//先创建顶点,再创建指向CreatGraph(int n ,VNode G[] ){\x09int i,e;\x09ArcNode *p ,*q;\x09printf(Input the information of the vertex\n);\x09for(i=0;iadjvex = e;\x09\x09\x09if(G[i].firstarc == NULL) \x09\x09\x09\x09G[i].firstarc = p; \x09\x09\x09else \x09\x09\x09\x09q->next = p; \x09\x09\x09q = p;\x09\x09\x09scanf(%d,&e);\x09\x09}\x09}}int FirstAdj(VNode G[],int v){\x09if(G[v].firstarc != NULL) \x09\x09return (G[v].firstarc)->adjvex;\x09return -1;}int NextAdj(VNode G[],int v){\x09ArcNode *p;\x09\x09p = G[v].firstarc;\x09while( p!= NULL)\x09{\x09\x09if(visited[p->adjvex]) //如果访问过了就继续找下一个结点\x09\x09\x09p = p->next;\x09\x09else \x09\x09\x09return p->adjvex;\x09//如果找到未访问过的就返回\x09}\x09return -1;}void DFS(VNode G[],int v){\x09int w;\x09\x09printf(%d ,G[v].data); \x09visited[v] = 1; \x09w = FirstAdj(G,v); \x09while(w != -1)\x09{//退出递归条件有二:一是直到某节点无指向,二是该深度没有可以访问的顶点\x09\x09if(visited[w] == 0) \x09\x09\x09DFS(G,w); \x09\x09w = NextAdj(G,v);
全部回答
  • 1楼网友:酒者煙囻
  • 2021-03-02 22:20
这个答案应该是对的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯