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

Popular Posts