有向图的深度优先遍历

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include "stdio.h"

#include "stdlib.h"

int visited[20];

#define MAX_VERTER_NUM 20 typedef char VertexType;

typedef struct ArcNode{

int adjver;

struct ArcNode *nextarc;

//InfoType *info;

}ArcNode;

typedef struct VNode{

VertexType data;

ArcNode *firstarc;

}VNode,AdjList[MAX_VERTER_NUM]; typedef struct{

AdjList vertices;

int vexnum,arcnum;

int kind;

}ALGraph;

void GraphCreated(ALGraph *G) {

int i,j,n;

ArcNode *p,*q;

printf("请输入顶点个数和弧数:\n");

scanf("%d%d",&G->vexnum,&G->arcnum);

for(i=0;ivexnum;i++)

{

printf("请输入顶点名:\n");

scanf("%c",&G->vertices[i].data);

scanf("%c",&G->vertices[i].data);

G->vertices[i].firstarc=NULL;

printf("请输入该点关联顶点数:\n");

scanf("%d",&n);

if(n!=0)

printf("请输入该弧所指向顶点位置:\n");

for(j=0;j

{

q=(ArcNode *)malloc(sizeof(ArcNode));

scanf("%d",&q->adjver);

if(G->vertices[i].firstarc==NULL)

{

G->vertices[i].firstarc=q;

p=q;

}

else

{

p->nextarc=q;

p=q;

}

}

p->nextarc=NULL;

}

}

void dfl(ALGraph *G,int v)

{

ArcNode *p;

visited[v]=1;

printf("%c\n",G->vertices[v].data);

p=G->vertices[v].firstarc;

while(p!=NULL)

{

if(visited[p->adjver]!=1)

dfl(G,p->adjver);

p=p->nextarc;

}

}

void main()

{

ALGraph G;

GraphCreated(&G);

dfl(&G,0);

}

相关文档
最新文档