Code360 powered by Coding Ninjas X Code360 powered by Coding Ninjas X
Last Updated: 23 Nov, 2016

Delete Alternate Nodes

Asked in companies
Morgan StanleyTata Consultancy Services (TCS)Amazon

Problem statement

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


01 Approach

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.