DFS in C
#include<conio.h>
#include<stdio.h>
int adj[15][15];
void dfs(int v, int n)
{
int stk[n],i,top=-1,visited[n+1];
for(i=0;i<n+1;i++)
visited[i]=0;
top++;
stk[top]=v;
printf("DFS is : %d ",v);
visited[v]=1;
while(top>=0)
{
v=stk[top];
top-=1;
if(visited[v]==0)
{printf("%d ",v); visited[v]=1;}
for(i=1;i<=n;i++)
if(adj[v][i]==1 && visited[i]==0)
{top++;stk[top]=i;}
}
}
void create(int n)
{
int maxnodes=n*((n-1)/2),i,u,v,j;
for(i=0;i<maxnodes;i++)
{
printf("Origin & dest:(0,0 to exit): ");
scanf("%d %d",&u,&v);
if(u==0 && v==0)
break;
else if( u> n || v > n || u<=0 || v<=0)
{
printf("Invalid edge!\n");
i--;
}
else
{
adj[u][v]=1;
adj[v][u]=1;
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{printf("%d ",adj[i][j]);}
printf("\n");
}
}
int main()
{
int n,i,j,vertex,choice,ch;
printf("enter the number of nodes: ");
scanf("%d",&n);
create(n);
printf("\nenter the starting vertex : ");
scanf("%d",&vertex);
dfs(vertex,n);
}
Comments
Post a Comment