我已經實現了一個static linkedList mergeSort (linkedList one)
方法,它對一個linkedList進行遞歸排序並工作。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