display()函数导致运行时错误

时间:2016-04-13 19:48:58

标签: c++ linked-list mergesort display

我已经实现了一个SFSafariViewController * sfSafariVC = [[SFSafariViewController alloc] initWithURL:url entersReaderIfAvailable:NO]; sfSafariVC.delegate = self; [self presentViewController:sfSafariVC animated:YES completion:nil]; 方法,该方法可以递归地对linkedList进行排序并且可以正常工作。

以下是我<?php if(condition) { ?> <link rel="stylesheet" href=".. /* or any other html code */ <?php } ?> 中定义的方法:

static linkedList mergeSort (linkedList one)

当我显示它时,它会正确打印到屏幕上,所以我知道它有效,但如果linkedList.h大于4505个节点,它就不会打印出来。我调试了以检查问题所在。显然它在我的显示功能中,但我没有看到它有什么问题。

这是:

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

有人可以指出我正确的方向如何解决这个问题? (如果可以修复的话。)非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

使用while循环实现代码,而不是调用4505次递归函数:

void display(node * p)
{
    while(p != NULL)
    {
       cout<<p->data<<" ";
       p = p->next;
    }
}