Python Program To Delete Alternate Nodes Of A Linked List Last Updated : 20 Feb, 2023 Summarize Comments Improve Suggest changes Share Like Article Like Report 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. Recommended: Please solve it on "PRACTICE" first, before moving on to the solution. Method 1 (Iterative): Keep track of previous of the node to be deleted. First, change the next link of the previous node and iteratively move to the next node. Python3 # Python3 program to remove alternate # nodes of a linked list import math # A linked list node class Node: def __init__(self, data): self.data = data self.next = None # Deletes alternate nodes # of a list starting with head def deleteAlt(head): if (head == None): return # Initialize prev and node to # be deleted prev = head now = head.next while (prev != None and now != None): # Change next link of previous # node prev.next = now.next # Free memory now = None # Update prev and node prev = prev.next if (prev != None): now = prev.next # UTILITY FUNCTIONS TO TEST # fun1() and fun2() # Given a reference (pointer to pointer) # to the head of a list and an , push a # new node on the front of the list. def push(head_ref, new_data): # Allocate node new_node = Node(new_data) # Put in the data new_node.data = new_data # Link the old list of the # new node new_node.next = head_ref # Move the head to point to the # new node head_ref = new_node return head_ref # Function to print nodes in a # given linked list def printList(node): while (node != None): print(node.data, end = " ") node = node.next # Driver code if __name__=='__main__': # Start with the empty list head = None # Using head=push() to construct # list 1.2.3.4.5 head = push(head, 5) head = push(head, 4) head = push(head, 3) head = push(head, 2) head = push(head, 1) print("List before calling deleteAlt() ") printList(head) deleteAlt(head) print("List after calling deleteAlt() ") printList(head) # This code is contributed by Srathore Output: List before calling deleteAlt() 1 2 3 4 5 List after calling deleteAlt() 1 3 5 Time Complexity: O(n) where n is the number of nodes in the given Linked List. Auxiliary Space: O(1) because it is using constant space Method 2 (Recursive): Recursive code uses the same approach as method 1. The recursive code is simple and short but causes O(n) recursive function calls for a linked list of size n. Python3 # Deletes alternate nodes of a list # starting with head def deleteAlt(head): if (head == None): return node = head.next if (node == None): return # Change the next link of head head.next = node.next # Free memory allocated for node free(node) # Recursively call for the new # next of head deleteAlt(head.next) # This code is contributed by Srathore Time Complexity: O(n) Auxiliary space: O(n) for call stack because using recursion Please refer complete article on Delete alternate nodes of a Linked List for more details! Comment More infoAdvertise with us Next Article Javascript Program To Delete Alternate Nodes Of A Linked List K kartik Follow Improve Article Tags : Python Linked Lists Morgan Stanley Python-DSA Practice Tags : Morgan Stanleypython Similar Reads Javascript 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.Method 4 min read 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 14 min read Javascript 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 = 2Linked List: 1->2->3->4->5->6->7->8Output:Linked List: 3 min read Implementation of XOR Linked List in Python Prerequisite: XOR Linked List An ordinary Doubly Linked List requires space for two address fields to store the addresses of previous and next nodes. A memory-efficient version of Doubly Linked List can be created using only one space for the address field with every node. This memory efficient Doub 6 min read Delete linked list nodes which have a Lesser Value on Left Side Given a singly linked list, the task is to remove all the nodes which have a lesser value on left side. Examples: Input: 12->15->10->11->5->6->2->3Output: Modified Linked List = 12 -> 10 -> 5 -> 2 Input: 25->15->6->48->12->5->16->14Output: Modified 7 min read Iterative approach for removing middle points in a linked list of line segments This post explains the iterative approach of this problem. We maintain two pointers, prev and temp. If these two have either x or y same, we move forward till the equality holds and keep deleting the nodes in between. The node from which the equality started, we adjust the next pointer of that node. 9 min read Like