图的深度遍历

图的深度遍历
图的深度遍历

#include

#include

#define n 4 //图的顶点数

#define e 5 //图的边数

typedef struct node

{

int adjvex;

struct node *next;

} edgenode;//边表节点

typedef struct

{

char vertex;

edgenode *link;

}vexnode;//顶点表节点

vexnode ga[n];

int visited[n];

void Creatadjlist(vexnode ga[])//建立无向图的邻接表{

int i,j,k;

edgenode *s;

printf("请输入各个顶点:");

for(i=0;i

{

ga[i].vertex=getchar();

ga[i].link=NULL;

}

printf("请输入各个边:");

for(k=0;k

{

scanf("%d%d",&i,&j);

s=malloc(sizeof(edgenode));

s->adjvex=j;

s->next=ga[i].link;

ga[i].link=s;

s=malloc(sizeof(edgenode));

s->adjvex=i;

s->next=ga[j].link;

ga[j].link=s;

}

}

void Dfsl(int i)//邻接表的深度遍历

{

edgenode *p;

printf("node:%c\n",ga[i].vertex);

visited[i]=1;

p=ga[i].link;

while(p!=NULL)

{

if(!visited[p->adjvex])

{

Dfsl(p->adjvex);

}

p=p->next;

}

}

void main()

{

int i;

Creatadjlist( ga);

printf("请输入需要遍历的顶点:\n");

scanf("%d",&i);

Dfsl(i);

}

相关主题
相关文档
最新文档