Friday, 22 June 2012

write a c program to create two singly linked list and perform union of two list and display i


/*write a c program to create two singly linked list and perform
union 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 inter();
void main()
{
clrscr();
create();
display();
inter();
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 inter()
{
printf("\nintersection 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",*(p2+j));
}
}
/*
enter the number for first L.L:-2

do you want to continue(Y|N):-y

enter the number for first L.L:-6

do you want to continue(Y|N):-y

enter the number for first L.L:-8

do you want to continue(Y|N):-n

enter the number for second L.L:-8

do you want to continue(Y|N):-n

element in first linked list are:-
2
6
8

element in second linked list are:-
8

intersection of two sets are:-
8
*/

No comments: