#include <stdio.h>
#include <malloc.h>
#define MAX 100
struct node
{
int vertex;
struct node *next;
};
struct node *adjlist[MAX];
int visited[MAX];
void setup(int n)
{
int u,v,i;
struct node *p;
for(i = 0; i < n; i++)
adjlist[i] = NULL;
scanf("%d%d",&u,&v);
while(u >= 0)
{
p = (struct node *)malloc(sizeof(struct node));
p->vertex = v;
p->next = adjlist[u];
adjlist[u] = p;
scanf("%d%d",&u,&v);
}
}
void DFS(int u)
{
struct node *p;
int v;
printf("%d",u);
visited[u] = 1;
p = adjlist[u];
while(p != NULL)
{
v = p->vertex;
if(!visited[v])
DFS(v);
p = p->next;
}
}
void print(int n)
{
struct node *p;
int i;
for(i = 0; i < n; i++)
{
printf("%d ",i);
p = adjlist[i];
while(p != NULL)
{
printf("%d ",p->vertex);
p = p->next;
}
printf("\n");
}
}
void main()
{
int n,i;
printf("Please input vertex number: ");
scanf("%d",&n);
for(i = 0; i < n; i++)
visited[i] = 0;
setup(n);
print(n);
printf("Order in travers by dfs:");
DFS(0);
}
邻接表—DFS
最新推荐文章于 2021-08-17 01:06:25 发布