C program to compare two linked lists
PROGRAM:
#include <stdio.h>#include <stdlib.h>
//Creating structure
struct node
{
int data;
struct node *link;
};
struct node * create(struct node *);
void disp(struct node *);
void compare(struct node *,struct node *);
//main function
int main()
{
struct node *first1=NULL;
struct node *first2=NULL;
printf("\nEnter first linked list:\n");
first1=create(first1);
printf("\nLinked list 1 created!\n");
disp(first1);
printf("\nEnter second linked list:\n");
first2=create(first2);
printf("\nLinked list 2 created!\n");
disp(first2);
compare(first1,first2);
return 0;
}
//function to create linked list
struct node * create(struct node *first)
{
struct node *new_node;
int choice=0;
do
{
new_node=(struct node *)malloc(sizeof(struct node));
printf("\nEnter an element\n");
scanf("%d",&new_node->data);
new_node->link=NULL;
if(first==NULL)
first=new_node;
else
{
new_node->link=first;
first=new_node;
}
printf("\nEnter 1 to continue, 0 to stop\n");
scanf("%d",&choice);
}while(choice==1);
return first;
}
//function to display linked list
void disp(struct node *first)
{
struct node *temp;
if(first==NULL)
printf("\nDisplay not possible, Linked list empty\n");
else if(first->link==NULL)
{
printf("Displaying linked list elements:\n");
printf("%d",first->data);
}
else
{
printf("Displaying linked list elements:\n");
temp=first;
while(temp!=NULL)
{
printf("%d\t",temp->data);
temp=temp->link;
}
}
}
//function to compare two linked lists
void compare(struct node * first1,struct node *first2)
{
struct node *temp1=first1, *temp2=first2;
if(first1==NULL && first2==NULL)
printf("\nLinked lists are equal\n");
else if(first1->link==NULL && first2->link==NULL)
{
if(first1->data==first2->data)
printf("\nLinked lists are equal\n");
else
printf("\nLinked lists are unequal\n");
}
else
{
while(temp1!=NULL && temp2!=NULL)
{
if(temp1->data!=temp2->data)
{
printf("\nLinked lists are unequal\n");
return;
}
else
{
temp1=temp1->link;
temp2=temp2->link;
}
}
if(temp1==NULL && temp2!=NULL)
{
printf("\nLinked lists are unequal\n");
return;
}
else if(temp1!=NULL && temp2==NULL)
{
printf("\nLinked lists are unequal\n");
return;
}
else
printf("\nLinked lists are equal\n");
}
}
OUTPUT:
TRIAL 1:
Enter first linked list:Enter an element
10
Enter 1 to continue, 0 to stop
0
Linked list 1 created!
Displaying linked list elements:
10
Enter second linked list:
Enter an element
10
Enter 1 to continue, 0 to stop
0
Linked list 2 created!
Displaying linked list elements:
10
Linked lists are equal
TRIAL 2:
Enter first linked list:Enter an element
10
Enter 1 to continue, 0 to stop
0
Linked list 1 created!
Displaying linked list elements:
10
Enter second linked list:
Enter an element
20
Enter 1 to continue, 0 to stop
0
Linked list 2 created!
Displaying linked list elements:
20
Linked lists are unequal
TRIAL 3:
Enter first linked list:Enter an element
10
Enter 1 to continue, 0 to stop
1
Enter an element
20
Enter 1 to continue, 0 to stop
1
Enter an element
30
Enter 1 to continue, 0 to stop
0
Linked list 1 created!
Displaying linked list elements:
30 20 10
Enter second linked list:
Enter an element
10
Enter 1 to continue, 0 to stop
1
Enter an element
20
Enter 1 to continue, 0 to stop
0
Linked list 2 created!
Displaying linked list elements:
20 10
Linked lists are unequal
TRIAL 4:
Enter first linked list:Enter an element
10
Enter 1 to continue, 0 to stop
1
Enter an element
20
Enter 1 to continue, 0 to stop
0
Linked list 1 created!
Displaying linked list elements:
20 10
Enter second linked list:
Enter an element
10
Enter 1 to continue, 0 to stop
1
Enter an element
20
Enter 1 to continue, 0 to stop
1
Enter an element
30
Enter 1 to continue, 0 to stop
0
Linked list 2 created!
Displaying linked list elements:
30 20 10
Linked lists are unequal
TRIAL 5:
Enter first linked list:Enter an element
10
Enter 1 to continue, 0 to stop
1
Enter an element
20
Enter 1 to continue, 0 to stop
1
Enter an element
30
Enter 1 to continue, 0 to stop
0
Linked list 1 created!
Displaying linked list elements:
30 20 10
Enter second linked list:
Enter an element
10
Enter 1 to continue, 0 to stop
1
Enter an element
20
Enter 1 to continue, 0 to stop
1
Enter an element
25
Enter 1 to continue, 0 to stop
0
Linked list 2 created!
Displaying linked list elements:
25 20 10
Linked lists are unequal
TRIAL 6:
Enter first linked list:Enter an element
10
Enter 1 to continue, 0 to stop
1
Enter an element
20
Enter 1 to continue, 0 to stop
1
Enter an element
30
Enter 1 to continue, 0 to stop
1
Enter an element
40
Enter 1 to continue, 0 to stop
1
Enter an element
50
Enter 1 to continue, 0 to stop
0
Linked list 1 created!
Displaying linked list elements:
50 40 30 20 10
Enter second linked list:
Enter an element
10
Enter 1 to continue, 0 to stop
1
Enter an element
20
Enter 1 to continue, 0 to stop
1
Enter an element
30
Enter 1 to continue, 0 to stop
1
Enter an element
40
Enter 1 to continue, 0 to stop
1
Enter an element
50
Enter 1 to continue, 0 to stop
0
Linked list 2 created!
Displaying linked list elements:
50 40 30 20 10
Linked lists are equal