Create Two Singly Linked List Perform Differences Display It C Program

How to write a c program to create two singly linked list and perform differencer of two list and display it in C Programming Language ?

Solution:
/*write a c program to create two singly linked list and perform
differences of two list and display it*/
#include<stdio.h>
#include<conio.h>
#include<alloc.h>
struct node
{
int data;
struct node *next;
}*start1=NULL,*start2=NULL,*q1,*q2,*temp1,*temp2;
int n1=0,n2=0,*p1,*p2,i,j;
void create();
void display();
void differ();
void main()
{
clrscr();
create ();
display();
differ();
getch();
}
void create()
{
char ch='y';
while(ch=='y'||ch=='Y')
{
temp1=malloc(sizeof(struct node));
printf("\nenter the number for first L.L:-");
scanf("%d",&temp1->data);
temp1->next=NULL;
n1++;
if(start1==NULL)
start1=temp1;
else
{
q1=start1;
while(q1->next!=NULL)
{
q1=q1->next;
}
q1->next=temp1;
}
printf("\ndo you want to continue(Y|N):-");
scanf("\n%s",&ch);
}
ch='y';
while(ch=='y'||ch=='Y')
{
temp2=malloc(sizeof(struct node));
printf("\nenter the number for second L.L:-");
scanf("%d",&temp2->data);
temp2->next=NULL;
n2++;
if(start2==NULL)
start2=temp2;
else
{
q2=start2;
while(q2->next!=NULL)
{
q2=q2->next;
}
q2->next=temp2;
}
printf("\ndo you want to continue(Y|N):-");
scanf("\n%s",&ch);
}
}
void display()
{
p1=(int *)malloc(n1*sizeof(int));
p2=(int *)malloc(n2*sizeof(int));
if(start1==NULL)
printf("\nlinked list is empty");
else
{
printf("\nelement in first linked list are:-\n");
q1=start1;
for(i=0;i<n1;i++)
{
if(q1!=NULL)
{
*(p1+i)=q1->data;
printf("%d\n",*(p1+i));
q1=q1->next;
}
}
}
if(start2==NULL)
printf("\nlinked list is empty");
else
{
printf("\nelement in second linked list are:-\n");
q2=start2;
for(i=0;i<n2;i++)
{
if(q2!=NULL)
{
*(p2+i)=q2->data;
printf("%d\n",*(p2+i));
q2=q2->next;
}
}
}
}
void differ()
{
printf("\ndifferences of two sets are:-\n");
for(i=0;i<n1;i++)
{
for(j=0;j<n2;j++)
{
if(*(p1+i)==*(p2+j))
break;
}
if(j==n2)
printf("%d\n",*(p1+i));
}
}

Output:
/*
enter the number for first L.L:-4                                              
                                                                               
do you want to continue(Y|N):-y                                                
                                                                               
enter the number for first L.L:-8                                              
                                                                               
do you want to continue(Y|N):-y                                                
                                                                               
enter the number for first L.L:-1                                              
                                                                               
do you want to continue(Y|N):-y                                                
                                                                               
enter the number for first L.L:-6                                              
                                                                               
do you want to continue(Y|N):-n                                                
                                                                               
enter the number for second L.L:-4                                             
                                                                               
do you want to continue(Y|N):-y                                                

enter the number for second L.L:-1                                             
                                                                               
do you want to continue(Y|N):-n                                                
                                                                               
element in first linked list are:-                                             
4                                                                              
8                                                                              
1                                                                              
6                                                                              
                                                                               
element in second linked list are:-                                            
4                                                                              
1                                                                              
                                                                               
differences of two sets are:-                                                  
8
6
*/


Learn More :