无向图,深度优先遍历结果出现重复,但加&后结果无误
问题结果截图:
递归时,当遍历完所有结点后tag由1变为0,而增加&后,没有这种问题,这是为什么呢?
//这里Agraph G没有取地址
//改为Agraph &G后无问题
void dfs (Agraph G, int v) {
printf("%c--",G.adjlist[v].data); /* 访问顶点v*/
G.adjlist[v].tag=1; /* 顶点v 的访问标志置为1*/
arcnode *p=G.adjlist[v].firstarc; /*p[v] 指向与顶点v 相关联的第一条边的结点*/
while(p!=NULL){
int w=p->adjvex; /* 读取到与v 相邻接的顶点w*/
if(G .adjlist[w].tag==0) /* 如果顶点w 未被访问*/
dfs(G,w); /* 从顶点w 出发,继续对G 进行深度优先遍历*/
p=p->nextarc;
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
没加 & 时,会复制一个 Agraph,dfs 函数里操作的是这个复制的 Agraph 对象。原始的 Agraph 对象的访问标志并没有变。