I have been struggling for hours on end with this problem. My goal is to sort a linked list using only pointers (I cannot place linked list into vec or array and then sort). I am given the pointer to the head node of the list. The only methods i can call on the pointers are head->next (next node) and head->key (value of int stored in node, used to make comparisons). I have been using my whiteboard excessively and have tried just about everything I can think of.
Node* sort_list(Node* head) { Node* tempNode = NULL; Node* tempHead = head; Node* tempNext = head->next; while(tempNext!=NULL) { if(tempHead->key > tempNext->key) { tempNode = tempHead; tempHead = tempNext; tempNode->next = tempNode->next->next; tempHead->next = tempNode; tempNext = tempHead->next; print_list(tempHead); } else { tempHead = tempHead->next; tempNext = tempNext->next; } } return head; }