Jun 112012
 

Given a linked list. Write code to delete alternate nodes from the list. For example:

If the list given is

2 -> 3 -> 5 -> 1 -> 4 -> 8

The result should be

2 -> 5 -> 4

Solution:

This is an easier one (compared to the usual code I put in this section). But there are few loop holes where students can get stuck. Let me write the code straight away:

We will take 2 points (head & next). next pointer will point to the node being deleted and head will point its previous node. In each loop we will delete the node pointed to by next pointer and we will reset the pointers.

void deleteAlternate(Node* head)
{
    // If there are 0 or 1 nodes then return
    if(head == NULL || head->link == NULL)
        return;

    Node * next = head->link;
    while(next != NULL)
    {
        head->link = next->link;
        delete next;

        // Make head & next, point to the next set of nodes
        head = head->link;
        if(head != null)
            next = head->link;
        else
            next = null;
    }
}

  4 Responses to “Delete alternate node of the linked list”

Comments (4)
  1. can we do this using double pointers? i did it..my code doesnt run

    • I think it can be changed for any kind of question, When we have double pointers, when we want to delete every 3’rd node (or every k’th node… You may want to have a look at how you are manipulating the pointers, because that is where the problem normally comes..

  2. there will be run time error while head point to null and next is assigne the link of head ie null.

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)