【发布时间】:2019-03-10 13:37:11
【问题描述】:
我写了一个代码单,以反向链接列表。 \ 但它会导致分段错误,我不知道为什么??
ListNode* ReverseList(ListNode* pHead) {
ListNode *ptr_back, *ptr_cur, *tmp;
ptr_cur = pHead;
ptr_back = pHead->next;
ptr_cur->next = NULL;
while(ptr_back){
tmp = ptr_back->next;
ptr_back->next = ptr_cur;
ptr_cur = ptr_back;
ptr_back = tmp;
}
return ptr_cur;
}
【问题讨论】:
-
这里可能存在多个问题。例如,你怎么知道 pHead->next 是一个有效的 ptr?我觉得这个问题缺乏细节。
-
是的,这段代码可能很完美(对我来说看起来很合理),但设置列表的代码有问题。
-
@Sir Donnie 你是对的!pHead->next 可能不是指向 ListNode 的有效指针,因此它可能没有 next 指针,并且 pHead->next->next 导致分段。
-
@Jesper Juhl,很抱歉没有完整的示例。但这是 OJ(nowcode.com) 的问题之一,我也不知道哪个测试示例未能通过我的代码。跨度>
标签: c++ linked-list segmentation-fault reverse