wojiaoqingfeng 2022-12-28 19:13 采纳率: 78.6%
浏览 21
已结题

p指向顶点v的第一条弧头结点,当p不为空时


4、补充BEGIN-END之间的内容,完成DFS算法
#include <stdio.h>
#include <malloc.h>
typedef struct ANode
{    int adjvex;                    //该边的邻接点编号
    struct ANode *nextarc;        //指向下一条边的指针
    int weight;                    //该边的相关信息,如权值(用整型表示)
} ArcNode;                        //边结点类型
typedef struct Vnode
{    InfoType info;                //顶点其他信息
    int count;                    //存放顶点入度,仅仅用于拓扑排序
    ArcNode *firstarc;            //指向第一条边
} VNode;                        //邻接表头结点类型
typedef struct 
{    VNode adjlist[MAXV];        //邻接表头结点数组
    int n,e;                    //图中顶点数n和边数e
} AdjGraph;                        //完整的图邻接表类型
int visited[MAXV]={0};
void DFS(AdjGraph *G,int v)  
{
    ArcNode *p;
    visited[v]=1;                   //置已访问标记
    printf("%d  ",v);                 //输出被访问顶点的编号
/**********BEGIN**********/
/*
p指向顶点v的第一条弧的弧头结点,当p不为空时:
如果p->adjvex顶点未访问,递归访问它
否则,p指向顶点v的下一条弧的弧头结点
*/

    



/**********END**********/
}
  • 写回答

1条回答 默认 最新

  • 流比 2022-12-28 19:49
    关注
    
    p = G->adjlist[v].firstarc;
    while (p != NULL) {
    if (!visited[p->adjvex]) {
    DFS(G, p->adjvex);
    }
    p = p->nextarc;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月6日
  • 已采纳回答 12月29日
  • 创建了问题 12月28日