Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define MAX_NODES 100
- typedef struct _adjlist {
- int node;
- struct _adjlist *link;
- } adjlist;
- adjlist graph[MAX_NODES];
- int visited[MAX_NODES]; // 0:unvisited 1:visited
- void insert(int v1, int v2);
- void dfs(int v);
- void insert(int v1, int v2)
- {
- adjlist* newNode = malloc(sizeof(struct _adjlist));
- adjlist* tempNode = malloc(sizeof(struct _adjlist));
- newNode->node = v2;
- newNode->link = NULL;
- if(graph[v1].link == NULL) graph[v1].link = newNode;
- else {
- tempNode = graph[v1].link;
- while(tempNode->link != NULL) tempNode = tempNode->link;
- tempNode->link = newNode;
- }
- }
- void dfs(int v)
- {
- /*
- Fill in your code here...
- visit v and traverse all its edges recursively.
- */
- adjlist *w;
- visited[v]= 1; printf("%d ",v);
- for (w = graph[v].link; w != NULL; w = w->link){
- if(visited[w->node] == 0){
- dfs(w->node);
- }
- }
- }
- int main()
- {
- int m,a,b;
- // initialize
- for(int i=0;i<MAX_NODES;i++)
- {
- graph[i].link=NULL;
- visited[i]=0; // unvisited
- }
- printf("Input the number of edges:\n");
- scanf("%d",&m);
- printf("Input these edges:\n");
- for(int i=0; i<m; i++)
- {
- scanf("%d %d", &a, &b);
- insert(a,b);
- insert(b,a);
- }
- //dfs(0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement