Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Merge a linked list into another linked list at alternate positions in Java
We are given two data structures as linked list Let’s say, List_1 and List_2. The task is to merge the elements of linked list ‘List_2’ into the linked list ‘List_1’ at an alternate position and if we are left with the elements which can't be merged into ‘List_1’ then it will be printed as the ‘List_2’ remaining elements.
For Example-:
In −
List_1 =

List_2 =

Out − Merged List is-:

Explanation − we are given with two lists i.e. List_1 and List_2. We had merged the possible elements of list_2 into List_1 at alternate positions. So, elements after merging in List_1 are 10- >3->2->1->1->4->2->5->5 and in List_2 are 7->2.
In −
List_1 = 11 -> 12 -> 13
List_2 = 14 -> 15 -> 16 -> 17 -> 18
Out −Merged List is -: 11 -> 14 -> 12 -> 15 -> 13
Explanation −we are given with two lists i.e. List_1 and List_2. We had merged the possible elements of list_2 into List_1 at alternate positions. So, elements after merging in List_1 are 11 - > 14 -> 12 -> 15 -> 13 and in List_2 are 16->17->18.
Approach used in the below program is as follows −
Create a head node that will point to the first node of a linked list.
Create a class of Node to create the linked list which will have value and next as data members. Define a default constructor as Node(int val) and set value as val and next as NULL.
-
Inside a method in add(int updated_value) to add the elements to a linked list.
Create an object as new_node and pass updated_value to the default constructor.
Set new_node.next to head and head to new_node
-
Inside a function in mergeList(TutorialPoint list)
Create an object as n1_curr and set to head and n2_curr to list.head
Create an object as n1_next and n2_next
Start While as n1_curr != null AND n2_curr != null. Inside the While set n1_next to n1_curr.next, n2_next to n2_curr.next, n2_curr.next to n1_next, n1_curr.next to n2_curr, n1_curr to n1_next and n2_curr to n2_next
Set list.head to n2_curr
-
Inside the main() method
Create an object as TutorialPoint list_1 to new TutorialPoint() and TutorialPoint list_2 to new TutorialPoint()
Add elements to list_1 as list_1.add(13), list_1.add(12) and list_1.add(11).
Add elements to list_2 as list_2.add(18), list_2.add(17), list_2.add(16), list_2.add(15) and list_2.add(14)
Call the mergeList method to merge the elements of list_2 to list_1 as list_1.mergeList(list_2)
Print the final list as an output.
Example
public class TutorialPoint{
Node head;
class Node{
int value;
Node next;
Node(int val){
value = val;
next = null;
}
}
void add(int updated_value){
Node new_node = new Node(updated_value);
new_node.next = head;
head = new_node;
}
void mergeList(TutorialPoint list){
Node n1_curr = head, n2_curr = list.head;
Node n1_next, n2_next;
while (n1_curr != null && n2_curr != null){
n1_next = n1_curr.next;
n2_next = n2_curr.next;
n2_curr.next = n1_next;
n1_curr.next = n2_curr;
n1_curr = n1_next;
n2_curr = n2_next;
}
list.head = n2_curr;
}
public static void main(String args[]){
TutorialPoint list_1 = new TutorialPoint();
TutorialPoint list_2 = new TutorialPoint();
list_1.add(13);
list_1.add(12);
list_1.add(11);
list_2.add(18);
list_2.add(17);
list_2.add(16);
list_2.add(15);
list_2.add(14);
list_1.mergeList(list_2);
System.out.println("Merged list is:");
Node temp = list_1.head;
while (temp != null){
System.out.print(temp.value + " ");
temp = temp.next;
}
System.out.println();
}
}
Output
If we run the above code it will generate the following Output
Merged list is: 11 14 12 15 13 16