Friday, 11 May 2012

Compare Two Linked Lists in C


#include<stdio.h>
#include<conio.h>
#include<alloc.h>
#define newa (struct a*) malloc(sizeof(struct a))


struct a
{
int data;
struct a *next;
};
struct a *create();


void main()
{
struct a *f1,*f2;
int len,reply;
f1 = f2 = NULL;
clrscr();
printf("\nEnter first list\n");
f1 = create();
printf("\nEnter second list\n");
f2 = create();
reply = comparelist(f1,f2);
if( reply == 1 )
printf("Both lists are same");
else
printf("Both lists are not same");
}


struct a *create()
{
struct a *f,*c,*p;
int info;
f = NULL;
printf("\n Enter data ( use 0 to exit ) : ");
scanf("%d",&info);
while( info != 0 )
{
c = newa;
if( c == NULL)
{
printf("\n Insuf. mem. ");
exit(0);
}
c->data = info;
c->next = NULL;
if( f== NULL)
f = c;
else
p->next = c;
p = c;
printf("\n Enter data ( use 0 to exit ) : ");
scanf("%d",&info);

return(f);



int comparelist(struct a *f1, struct a *f2)
{
int reply;
struct a *t1,*t2;

if( f1 == NULL && f2 == NULL)
return(1);


t1 = f1;
t2 = f2;

while( t1 != NULL && t2 != NULL)
{
if( t1->data != t2->data )
break;
t1 = t1->next;
t2 = t2->next;
}
if( t1 == NULL && t2 == NULL)
return(1);
else
return(0);
}

No comments:

Post a Comment