无向图,深度优先遍历结果出现重复,但加&后结果无误

发布于 2022-09-11 23:41:15 字数 582 浏览 11 评论 0

问题结果截图:
image.png

递归时,当遍历完所有结点后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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

友谊不毕业 2022-09-18 23:41:15

没加 & 时,会复制一个 Agraph,dfs 函数里操作的是这个复制的 Agraph 对象。原始的 Agraph 对象的访问标志并没有变。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文