#include"邻接表存储结构.cpp" int len=0;//记录当前路径长度 int path[MAXVEX]; //bool visited[MAXVEX]; //创建邻接表 void Create(GraphAdjList &G){ int i,j,k; EdgeNode *p; printf("输入顶点数和边数:n"); cin>>G.numVertexes>>G.numEdges; //输入顶点信息 printf("输入顶点信息:n"); for(i=1;i<=G.numVertexes;i++){ cin>>G.vertices[i].data; G.vertices[i].firstedge=NULL; //将指向边表的指针初始化 } //建立边表 printf("输入边(Vi,Vj)中的下标i,j:n"); for(k=0;kadjvex=j; //存储弧头 p->next=G.vertices[i].firstedge; //头插法插入边结点 G.vertices[i].firstedge=p; //下面代码有向图无,无向图有 p=(EdgeNode *)malloc(sizeof(EdgeNode));//c写法 p->adjvex=i; //存储弧头 p->next=G.vertices[j].firstedge; //头插法插入边结点 G.vertices[j].firstedge=p; } //打印邻接表 printf("邻接表为:n"); for(i=1;i<=G.numVertexes;i++){ p=G.vertices[i].firstedge; while(p){ printf("(%d,%d)",G.vertices[i].data,p->adjvex); p=p->next; } printf("n"); } } ///从顶点i到顶点j的所有长度为k的简单路径 void DFS(GraphAdjList G,int i,int j,int k){ visited[i]=true;//将当前结点设置为已访问 path[len]=i;//记录当前结点,并对路径长度+1 len++; if(len==k+1&&i==j){//找到长度为k的路径且当前结点(i)为j for(int m=0;m adjvex]) DFS(G,p->adjvex,j,k); p=p->next; } len--;//搜索后路径-1 visited[i]=false;//恢复访问位( } void PrintSimplePath(GraphAdjList G,int i,int j,int k){ for(int m=1;m<=G.numVertexes;m++) visited[m]=false;//初始化 DFS(G,i,j,k); } int main(){ GraphAdjList G; Create(G); cout< 欢迎分享,转载请注明来源:内存溢出
图(简单路径) c/c++
赞
(0)
打赏
微信扫一扫
支付宝扫一扫
【opencv】(4) 形态学处理:腐蚀膨胀、梯度运算、礼帽黑帽
上一篇
2022-12-16
SSRS:该字段在查询中显示正确,但在报告预览中显示错误
下一篇
2022-12-16
评论列表(0条)