Untitled

mail@pastecode.io avatar
unknown
plain_text
5 months ago
1.2 kB
3
Indexable
struct Node
{
    int data;
    struct Node *next;
};

// Function to create new node in a linkedlist
Node* newNode(int key)
{
    Node *temp = new Node;
    temp->data = key;
    temp->next = NULL;
    return temp;
}

void reverse_list(Node **head)
{
    Node *prev = NULL;
    Node *curr = *head;
    Node *next;
 
    while (curr && curr->next)
    {
        next = curr->next;
        curr->next = prev;
        curr = next;
        prev = curr;
    }
}

// Main function to reorder a linked list
void reorder_list(Node **head)
{
    Node *slow = *head, *fast = slow->next;
    while (fast->next && fast->next->next)
    {
        slow = slow->next;
        fast = fast->next;
    }
 
    Node *head1 = *head;
    Node *head2 = slow;
    slow->next = NULL;
 
    reverse_list(&head2);
 
    *head = newNode(0); // Assign dummy Node
    Node *curr = *head;
    while (head1 && head2)
    {
             if(head1) {
    		 curr->next = head1;
            	 curr = curr->next;
            	 head1 = head1->next;
              if(head2) {
            	 curr->next = head2;
            	 curr = curr->next;
            	 head2 = head2->next;
             }
          }
    }
 }
Leave a Comment