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


4、补充BEGIN-END之间的内容,完成DFS算法
#include 
#include 
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**********/
}

p = G->adjlist[v].firstarc;
while (p != NULL) {
if (!visited[p->adjvex]) {
DFS(G, p->adjvex);
}
p = p->nextarc;
}