Sorting a Singly Linked List With Pointers

Posted by Mark Simson on Stack Overflow See other posts from Stack Overflow or by Mark Simson
Published on 2013-10-24T03:34:07Z Indexed on 2013/10/24 3:54 UTC
Read the original article Hit count: 90

I am trying to sort a singly linked list using bubble sort by manipulating ONLY the pointers, no keys.

The following gets stuck in the for loop and loops infinitely. I don't understand why this is. Can anybody explain to me why the end of the list is not being found?

Node* sort_list(Node* head)
{
    Node * temp;
    Node * curr;
    for(bool didSwap = true; didSwap; ) {
            didSwap = false;
            for(curr = head; curr->next != NULL; curr = curr->next) {
                    if(curr->key > curr->next->key) {
                            temp = curr;
                            curr = curr->next;
                            curr->next = temp;
                            didSwap = true;
                    }
                    cout << curr->next->key << endl;
            }
    }
    return head;

}

If I change the code so that the keys (data) are swapped, then the function works properly but for some reason I am not able make it work by manipulating only pointers.

© Stack Overflow or respective owner

Related posts about c++

Related posts about bubble-sort