Ich habe eine rekursive Funktion hier, aber es verursacht Überlauf Fehler, so muss ich es in eine nicht-rekursive Funktion ändern. Jede Hilfe, wie man das macht, wird sehr geschätzt!Konvertieren rekursiver Funktion
void MergeSort(struct node** headRef)
{
node* head = *headRef;
node* a;
node* b;
if ((head == NULL) || (head->next == NULL))
{
return;
}
FrontBackSplit(head, &a, &b);
MergeSort(&a);
MergeSort(&b);
*headRef = SortedMerge(a, b);
}
Haben Sie das erforscht? –
Ist das eine akademische Frage? Sie könnten die STL 'sort' auch auf einem Standardcontainer verwenden. Wenn Sie mit dieser Implementierung der verknüpften Liste verbunden sind, müssten wir auch 'FrontBackSplit' sehen, um zu analysieren. –
Ja, ich muss eine verkettete Liste verwenden. Und ich stelle diese Funktion unten auf. –