# Java Program To Delete Alternate Nodes Of A Linked List

Last Updated : 31 Aug, 2022

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 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.

## Java

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.

## Java

 /* Deletes alternate nodes of    a list starting with head */ static Node deleteAlt(Node head) {     if (head == null)         return;       Node node = head.next;       if (node == null)         return;       // Change the next link of head     head.next = node.next;         /* Recursively call for the new        next of head */     head.next = deleteAlt(head.next); } // This code is contributed by Arnab Kundu

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!