Delete Alternate Nodes

Posted: 23 Nov, 2016
Difficulty: Easy


Try Problem

Given a Singly Linked List of integers, delete all the alternate nodes in the list.

List: 10 -> 20 -> 30 -> 40 -> 50 -> 60 -> null
Alternate nodes will be:  20, 40, and 60.

Hence after deleting, the list will be:
Output: 10 -> 30 -> 50 -> null
Note :
The head of the list will remain the same. Don't need to print or return anything.
Input format :
The first and the only line of input will contain the elements of the Singly Linked List separated by a single space and terminated by -1.
Output Format :
The only line of output will contain the updated list elements.
Input Constraints:
1 <= N <= 10 ^ 6.
Where N is the size of the Singly Linked List

Time Limit: 1 sec
Approach 1

Let us maintain two pointers, curr and currNext. currNext will be used for storing the pointer of the node next to the node pointed by curr. curr is initialized with the head of the list initially. Then the algorithm follows:

While curr or curr→next is not NULL:

  1. Assign curr→next to currNext.
  2. Change curr→next to currNext→next.
  3. Move curr to curr→next.
Try Problem