Python Program To Merge A Linked List Into Another Linked List At Alternate Positions Last Updated : 17 May, 2022 Summarize Comments Improve Suggest changes Share Like Article Like Report Given two linked lists, insert nodes of the second list into the first list at alternate positions of the first list. For example, if first list is 5->7->17->13->11 and second is 12->10->2->4->6, the first list should become 5->12->7->10->17->2->13->4->11->6 and second list should become empty. The nodes of the second list should only be inserted when there are positions available. For example, if the first list is 1->2->3 and the second list is 4->5->6->7->8, then the first list should become 1->4->2->5->3->6 and the second list to 7->8.Use of extra space is not allowed (Not allowed to create additional nodes), i.e., insertion must be done in-place. The expected time complexity is O(n) where n is the number of nodes in the first list. Recommended: Please solve it on "PRACTICE" first, before moving on to the solution. The idea is to run a loop while there are available positions in first loop and insert nodes of second list by changing pointers. Following are implementations of this approach. Python3 # Python program to merge a linked list # into another at alternate positions class Node(object): def __init__(self, data:int): self.data = data self.next = None class LinkedList(object): def __init__(self): self.head = None def push(self, new_data:int): new_node = Node(new_data) new_node.next = self.head # 4. Move the head to point to # new Node self.head = new_node # Function to print linked list from # the Head def printList(self): temp = self.head while temp != None: print(temp.data) temp = temp.next # Main function that inserts nodes of linked # list q into p at alternate positions. # Since head of first list never changes # but head of second list/ may change, # we need single pointer for first list and # double pointer for second list. def merge(self, p, q): p_curr = p.head q_curr = q.head # swap their positions until one # finishes off while p_curr != None and q_curr != None: # Save next pointers p_next = p_curr.next q_next = q_curr.next # make q_curr as next of p_curr # change next pointer of q_curr q_curr.next = p_next # change next pointer of p_curr p_curr.next = q_curr # update current pointers for next # iteration p_curr = p_next q_curr = q_next q.head = q_curr # Driver code llist1 = LinkedList() llist2 = LinkedList() # Creating Linked lists # 1. llist1.push(3) llist1.push(2) llist1.push(1) llist1.push(0) # 2. for i in range(8, 3, -1): llist2.push(i) print("First Linked List:") llist1.printList() print("Second Linked List:") llist2.printList() # Merging the LLs llist1.merge(p=llist1, q=llist2) print("Modified first linked list:") llist1.printList() print("Modified second linked list:") llist2.printList() # This code is contributed by Deepanshu Mehta Output: First Linked List: 1 2 3 Second Linked List: 4 5 6 7 8 Modified First Linked List: 1 4 2 5 3 6 Modified Second Linked List: 7 8 Time Complexity: O(N) Auxiliary Space: O(1) Please refer complete article on Merge a linked list into another linked list at alternate positions for more details! Comment More infoAdvertise with us Next Article Python Program To Merge A Linked List Into Another Linked List At Alternate Positions K kartik Follow Improve Article Tags : Linked List Python Programs DSA Amazon Python-DSA +1 More Practice Tags : AmazonLinked List Similar Reads Python Program To Delete Alternate Nodes Of A Linked List Given a Singly Linked List, starting from the second node delete all alternate nodes of it. For example, if the given linked list is 1->2->3->4->5 then your function should convert it to 1->3->5, and if the given linked list is 1->2->3->4 then convert it to 1->3. Recomm 3 min read Python Program For Deleting A Linked List Node At A Given Position Given a singly linked list and a position, delete a linked list node at the given position. Example: Input: position = 1, Linked List = 8->2->3->1->7 Output: Linked List = 8->3->1->7 Input: position = 0, Linked List = 8->2->3->1->7 Output: Linked List = 2->3->1 3 min read Python Program For In-Place Merge Two Linked Lists Without Changing Links Of First List Given two sorted singly linked lists having n and m elements each, merge them using constant space. First, n smallest elements in both the lists should become part of the first list and the rest elements should be part of the second list. Sorted order should be maintained. We are not allowed to chan 4 min read Python Program For Moving Last Element To Front Of A Given Linked List Write a function that moves the last element to the front in a given Singly Linked List. For example, if the given Linked List is 1->2->3->4->5, then the function should change the list to 5->1->2->3->4. Algorithm: Traverse the list till the last node. Use two pointers: one t 3 min read Python Program To Delete N Nodes After M Nodes Of A Linked List Given a linked list and two integers M and N. Traverse the linked list such that you retain M nodes then delete next N nodes, continue the same till end of the linked list.Difficulty Level: Rookie Examples: Input: M = 2, N = 2 Linked List: 1->2->3->4->5->6->7->8 Output: Linked L 3 min read Like