DFS-C
Posted Shell
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DFS-C相关的知识,希望对你有一定的参考价值。
#include<stdio.h> typedef struct node { struct node *next; int vertex; }node; node *G[20]; //heads of linked list int visited[20]; int n; void read_graph(); //create adjacency list void insert(int,int); //insert an edge (vi,vj) in te adjacency list void DFS(int); void main() { int i; read_graph(); //initialised visited to 0 for(i=0;i<n;i++) visited[i]=0; DFS(0); } void DFS(int i) { node *p; printf("\n%d",i); p=G[i]; visited[i]=1; while(p!=NULL) { i=p->vertex; if(!visited[i]) DFS(i); p=p->next; } } void read_graph() { int i,vi,vj,no_of_edges; printf("Enter number of vertices:"); scanf("%d",&n); //initialise G[] with a null for(i=0;i<n;i++) { G[i]=NULL; //read edges and insert them in G[] printf("Enter number of edges:"); scanf("%d",&no_of_edges); for(i=0;i<no_of_edges;i++) { printf("Enter an edge(u,v):"); scanf("%d%d",&vi,&vj); insert(vi,vj); } } } void insert(int vi,int vj) { node *p,*q; //acquire memory for the new node q=(node*)malloc(sizeof(node)); q->vertex=vj; q->next=NULL; //insert the node in the linked list number vi if(G[vi]==NULL) G[vi]=q; else { //go to end of the linked list p=G[vi]; while(p->next!=NULL) p=p->next; p->next=q; } }
以上是关于DFS-C的主要内容,如果未能解决你的问题,请参考以下文章