Given a linked list structure where every node represents a linked list and
contains two pointers of its type:
(i) pointer to next node in the main list.
(ii) pointer to a linked list where this node is head.

Write a C function to flatten the list into a single linked list.

Eg.

If the given linked list is
 1 -- 5 -- 7 -- 10
 |       |      |
 2     6     8
 |       |
 3     9
 |
 4

then convert it to
 1 - 2 - 3 - 4 - 5 - 6 - 9 - 7 - 8 -10



My solution - not tested :

struct node
{
  int data;

  struct node *fwd; //pointer to next node in the main list.

  struct node *down; //pointer to a linked list where this node is head.

}*head,*temp,*temp2;

temp=head;
while(temp->fwd!=NULL)
{
    temp2=temp->fwd;

    while(temp->down!=NULL)
    {
        temp=temp->down;
    }
    temp->down=temp2;
    temp->fwd=NULL;
    temp=temp2;

}


plz notify me if anything...other solutions and optimizations are welcome








-- 
Regards,
$iva

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algoge...@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to