Adjacency List
February 01, 2022
Create The Adjacency List Of The Graph Using Link List
Source code :-
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
char data;
struct node *next;
struct edge *adj;
}node;
typedef struct edge
{
node *dest;
struct edge *link;
}edge;
node *start;
node *get1(char x)
{
node *p;
p=(node *)malloc(sizeof(node));
p->data=x;
p->next=NULL;
p->adj=NULL;
return p;
}
edge *get2()
{
edge *p;
p=(edge *)malloc(sizeof(edge));
p->dest=NULL;
p->link=NULL;
return p;
}
node *create()
{
node *p,*q;
edge *r,*s;
char x,y;
while(1)
{
fflush(stdin);
printf("Enter the node (if no vertex then press only [enter]) : ");
scanf("%c",&x);
if(x=='\n')
break;
p=get1(x);
if(start==NULL)
start=p;
else
q->next=p;
q=p;
printf("\n");
}
p=start;
while(p!=NULL)
{
printf("\n");
while(1)
{
printf("\nEnter the adjacent vertex of %c (if no vertex then press only [enter]) : ",p->data);
fflush(stdin);
scanf("%c",&x);
if(x=='\n')
break;
q=start;
while(q!=NULL)
{
if(x==q->data)
break;
q=q->next;
}
if(q==NULL)
printf("\nPlease enter right value.\n");
else
{
r=get2();
r->dest=q;
if(p->adj==NULL)
p->adj=r;
else
s->link=r;
s=r;
}
}
p=p->next;
}
return start;
}
void display(node *start)
{
node *a;
edge *b;
if(start==NULL)
{
printf("\n\nlink list not exist.\n");
return;
}
a=start;
printf("\n\nThe required result is:- \n");
printf("\n| NODE | | ADJACENCY LIST \n\n");
while(a!=NULL)
{
printf("| %c | | ",a->data);
b=a->adj;
while(b!=NULL)
{
printf("%c ",b->dest->data);
b=b->link;
}
a=a->next;
printf("\n");
}
}
int main()
{
create();
display(start);
return 1;
}
Input-Output :-
abhi@hp-15q-laptop:~$ gcc adjacency.c
abhi@hp-15q-laptop:~$ ./a.out
Enter the node (if no vertex then press only [enter]) : A
Enter the node (if no vertex then press only [enter]) : B
Enter the node (if no vertex then press only [enter]) : C
Enter the node (if no vertex then press only [enter]) : D
Enter the node (if no vertex then press only [enter]) : E
Enter the node (if no vertex then press only [enter]) :
Enter the adjacent vertex of A (if no vertex then press only [enter]) : B
Enter the adjacent vertex of A (if no vertex then press only [enter]) : C
Enter the adjacent vertex of A (if no vertex then press only [enter]) : D
Enter the adjacent vertex of A (if no vertex then press only [enter]) :
Enter the adjacent vertex of B (if no vertex then press only [enter]) : C
Enter the adjacent vertex of B (if no vertex then press only [enter]) :
Enter the adjacent vertex of C (if no vertex then press only [enter]) :
Enter the adjacent vertex of D (if no vertex then press only [enter]) : C
Enter the adjacent vertex of D (if no vertex then press only [enter]) : E
Enter the adjacent vertex of D (if no vertex then press only [enter]) :
Enter the adjacent vertex of E (if no vertex then press only [enter]) : C
Enter the adjacent vertex of E (if no vertex then press only [enter]) :
The required result is:-
| NODE | | ADJACENCY LIST
| A | | B C D
| B | | C
| C | |
| D | | C E
| E | | C

Post a Comment