+ Reply to Thread
Results 1 to 4 of 4

Thread: Reverse K nodes of a List

  1. #1
    TopGun Guest

    Reverse K nodes of a List

    Given a list, you have to write a program to reverse every K nodes of the list, if numbers of nodes in list is not multiple of K then leave the last remaining nodes as it is.

    Ex:
    List 1:
    1->2->3->4->5->6->7->8->9

    given k =3
    output will be
    3->2->1->6->5->4->9->8->7

    If list is
    1->2->3->4->5->6->7->8
    and k=3, then output should be
    3->2->1->6->5->4->7->8

  2. #2
    Shwetank Gupta Guest

    Re: Reverse K nodes of a List

    I have made a try ..kindly check it out...

    listptr reverse_kadj(listptr head, int k)
    {
    if(!(head && head->link))
    return head;
    listptr start_node,tmp;
    int end_flag = 0;
    listptr ptr = head;
    listptr prev_start_node;
    listptr next_start_node;
    int i;
    while(1)
    {
    for(i=0,start_node = ptr;i<k-1;i++,ptr = ptr->link)
    {
    if(!ptr)
    {
    end_flag = 1;
    break;
    }
    }
    if(!ptr || end_flag == 1)
    break;
    next_start_node = ptr->link;
    tmp = reverse_modify(start_node, next_start_node);
    if(start_node == head)
    head = tmp;
    else
    prev_start_node->link = tmp;
    prev_start_node = start_node;
    ptr = next_start_node;
    }
    return head;
    }

    listptr reverse_modify(listptr start_node, listptr next_start_node)
    {
    listptr trail, middle;
    listptr lead = start_node;
    middle = next_start_node;
    while(lead != next_start_node)
    {
    trail = middle;
    middle = lead;
    lead = lead->link;
    middle->link = trail;
    }
    return middle;
    }

  3. #3
    arun4interviews Guest

    Re: Reverse K nodes of a List

    Good implementation. We rarely see them in java.

  4. #4
    game.iiith Guest
    Code:
    void kreverse(node **s, int n)
    {
            node *tt1, *t1,*t2,*t3;
            tt1 = t1 = t2 = t3 = *s;
            t2 = t2->next;n--;
            while (t2 != NULL && n--)
            {
                    t3 = t2->next;
                    t2->next = t1;
                    t1 = t2;
                    t2 = t3;
            }
            if (tt1 != t3)
                    tt1->next = t3;
            *s = t1;
            return ;
    }
    Avi
    Avi Dullu&#039;s Code Arena

+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Reverse each individual words in a sentence
    By TopGun in forum Microsoft
    Replies: 2
    Last Post: 8th January 2009, 21:18

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts