Home Linked List Write a code to check if 2 linked lists are identical.

Write a code to check if 2 linked lists are identical.

by nikoo28
0 comment

Question: Write a program to check if 2 linked lists are identical?

Method 1(Iterative):-

To Determine if both Linked lists are identical, we need to traverse both lists simultaneously, and while traversing we need to compare data of each node.

Implementation

//returns 1 if both lists are identical or returns 0
int areIdenticalLinkedList(struct node * list1, struct node * list2)
{
	while(1)
	{
		// return 1 if both are NULL
		if(list1 == NULL && list2 == NULL)
			return 1;
		
		// return 0 if one of them is NULL
		if(list1 == NULL || list2 == NULL)
			return 0;

		if(list1 -> data != list2 -> data)
			return 0;
			
		list1 = list1 -> next;
		list2 = list2 -> next;
	}
}

Method2( Recursive):-

//returns 1 if both lists are identical or returns 0
int areIdenticalLinkedListRecursive(struct node * list1, struct node * list2)
{
	// return 1 if both are same
	if (list1 == NULL && list2 == NULL)
		return 1;

	// return 0 if one of them is different
	if (list1 == NULL || list2 == NULL)
		return 0;

	if (list1 -> data != list2 -> data)
		return 0;

	// the recursive call
	return areIdenticalLinkedListRecursive(list1 -> next, list2 -> next);
}

It may seem that both recursive and iterative implementation are the same but the iterative version is recommended since it offers better control and the recursive implementation maintains a stack of all the callbacks.

0 comment

You may also like

Enclose codes in [code lang="JAVA"] [/code] tags

This site uses Akismet to reduce spam. Learn how your comment data is processed.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More