Sortowanie połączonej listy C ++ ze wskaźnikami

Przez wiele godzin walczyłem z tym problemem. Moim celem jest sortowanie połączonej listy tylko za pomocą wskaźników (nie mogę umieścić połączonej listy w vec lub tablicy, a następnie sortować). Otrzymałem wskaźnik do węzła głównego listy. Jedynymi metodami, które mogę wywołać na wskaźnikach, są head-> next (następny węzeł) i head-> key (wartość int przechowywana w węźle, używana do porównywania). Zbyt często korzystam z mojej tablicy i próbowałem prawie wszystkiego, co tylko mogę wymyślić.

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;
}

questionAnswers(7)

yourAnswerToTheQuestion