Sortierung verkettete Liste C++ mit Zeigern

Ich zu kämpfen haben, für Stunden lang am Ende mit diesem problem. Mein Ziel ist, Sortieren Sie eine verlinkte Liste nur Zeiger (ich kann nicht verknüpfte Liste in vec oder ein array und dann Sortieren). Ich bin angesichts der Zeiger auf dem head-Knoten der Liste. Die einzigen Methoden, die ich aufrufen kann, auf die Zeiger sind Kopf->next (Nächster Knoten) und head->Schlüssel (Wert von int gespeichert in Knoten, verwendet, um Vergleiche). Ich habe mit meinem whiteboard übermäßig und haben versucht, fast alles, was ich mir denken kann.

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;
}
  • Poste den code, den Sie versuchen zu beheben. Wir sind nicht dagegen, Leser - ohne zu sehen, was Sie versucht haben, es gibt keinen Weg, um zu helfen.
  • Was haben Sie versucht? Sind Sie auf der Suche für jemanden zu schreiben, den code für Sie?
  • code Sorry, ich habe vergessen zu einfügen mein code, wenn ich mein post. Ich habe versucht, eine Menge Dinge, die im Laufe der letzten 5 Stunden. Wenn Sie Kritik an meinem code, das wäre sehr gut, aber die Allgemeinen Ideen sind auch hilfreich. Die Methode print_list nimmt in einem Knoten und druckt den Knoten aus, der an das Ende der Liste.
  • Bitte fügen Sie den code hinzu, um die Frage, nicht als link zu einer externen Website in einem Kommentar.
  • Sie scheinen nicht zu tun, jede Sortierung in der code.
  • Sie haben eine Besondere Sortier-Algorithmus in den Sinn?
  • Etwas ähnliches wie insertion sort, denke ich
  • Der code, den Sie geschrieben sieht eher aus wie ein Versuch, einen bubble-sort, und es verliert der Knoten. Sollten Sie angepackt haben, das einfachere problem zu tauschen zwei benachbarte Elemente zuerst.
  • Merge-sort ist einfach zu tun, einfach verknüpfte Listen, und kann schneller sein als das einfügen oder bubble-Sorten.

InformationsquelleAutor dclark | 2013-10-25
Schreibe einen Kommentar