Я внедрил метод static linkedList mergeSort (linkedList one)
, который рекурсивно сортирует связанныйList и работает.Функция display() вызывает ошибку времени выполнения
Вот метод, который определен в моем linkedList.h
:
linkedList linkedList::mergeSort(linkedList& one)
{
if (one.head->next == NULL)
{
return one;
}
else
{
linkedList right;
linkedList::split(one, right);
right = mergeSort(right);
one = mergeSort(one);
linkedList sort;
linkedList::merge(one, right, sort);
one = sort;
return one;
}
}
Когда я показываю, он печатает правильно на экране, так что я знаю, что это работает, но если linkedList
больше чем 4505 узлов, его не будет печатать. Я отлаживал, чтобы проверить, где проблема. По-видимому, это в моей функции отображения, но я не вижу в этом ничего плохого.
Здесь:
void display(node * p)
{
if (p == NULL)
{
}
else
{
cout << p->data << " ";
display(p->next);
}
}
Проблема указывает на cout << p->data << " ";
Может кто-то пожалуйста, мне точку в правильном направлении, о том, как это исправить? (Если он может быть исправлен вообще.) Любая помощь будет очень признательна.
вызывающей рекурсивную функцию 4505 время не является хорошей идеей – Pooya