邻接表—DFS

来源:互联网 发布:无损音乐下载 知乎 编辑:程序博客网 时间:2024/06/07 23:22
#include <stdio.h>#include <malloc.h>#define MAX 100struct 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);}

0 0
原创粉丝点击