Sei sulla pagina 1di 5

(5)WAP in C to implement Directed Graph.

#include<stdio.h>

//#include<alloc.h>

//void insert_vertex(int);

//void insert_adj(struct node *);

//void traverse(struct node *);

struct adj

int info;

struct node *next;

};

typedef struct adj adj;

struct node

int info;

struct node *next;

adj *first;

};

typedef struct node node;

void main()

{
int i;

clrscr();

printf("Enter no. of vertices");

scanf("%d",&i);

insert_vertex(i);

getch();

void insert_vertex(int i)

node *beg=NULL,*temp,*ptr;

int n;

for(n=1;n<=i;n++)

temp=(node *)malloc(sizeof(node));

temp->info=n;

temp->next=NULL;

temp->first=NULL;

if(beg==NULL)

beg=temp;

else

ptr=beg;

while(ptr->next!=NULL)
ptr=ptr->next;

ptr->next=temp;

printf("%d vertices created \n",i);

insert_adj(beg);

void insert_adj(node *beg)

int n;

char ch;

node *ptr=beg;

adj *p,*temp;

while(ptr!=NULL)

n=ptr->info;

printf("Want to enter adjacent node to vertex %d (y/n)",n);

fflush(stdin);

scanf("%c",&ch);

while(ch=='y'||ch=='Y')

temp=(adj *)malloc(sizeof(adj));

printf("Enter value to adjacent node");


scanf("%d",&temp->info);

temp->next=NULL;

if(ptr->first==NULL)

ptr->first=temp;

else

p=ptr->first;

while(p->next!=NULL)

p=p->next;

p->next=temp;

printf("Want to enter more adj. node(y/n)");

fflush(stdin);

scanf("%c",&ch);

}//end of while

ptr=ptr->next;

}//end of while

traverse(beg);

}//end of insert_adg

void traverse(node *beg)

node *ptr=beg;

adj *p;
printf("\n vertex\t adjacent nodes\n");

while(ptr!=NULL)

printf("\n %d\t",ptr->info);

p=ptr->first;

while(p!=NULL)

printf("%d\t",p->info);

p=p->next;

}//end of while

ptr=ptr->next;

}//end of while

}//end of fn traverse

Potrebbero piacerti anche