【发布时间】:2019-10-17 17:44:03
【问题描述】:
我尝试使用此代码反转单链表的一部分。
这里的startOfSec是链表中要反转的节的起始节点的指针,endofSec是指向该节的最后一个节点的指针。
现在,使用这段代码,我遇到了分段错误,但是如果我将 endOfSec->next 替换为 NULL(我正在更改指针的值,指向该部分的最后一个节点(这将被反转) 的原始链表,也为 NULL) 在 while 循环条件下,它工作得很好!
void reverseList(ListNode* startOfSec, ListNode *endOfSec){
ListNode *prev = NULL;
ListNode *curr = startOfSec;
ListNode *nxt;
while(curr!=endOfSec->next){
nxt = curr->next;
curr->next = prev;
prev = curr;
curr = nxt;
}
}
Callsite:
//code to get start and end pointers
reverseList(start, end);
我希望我的代码在不需要将 end->next 指针设置为 NULL 的情况下反转列表部分。
【问题讨论】:
-
什么是
endOfSec?它指向哪里?您可以尝试创建一个minimal reproducible example 向我们展示吗? -
@Someprogrammerdude
endOfSec指向我想要反转的列表部分的最后一个节点。例如,如果列表是1->2->3->4->5->6->7->8,而要反转的部分是3->4->5->6,那么 startOfSec 指向 3 而 endOfSec 指向 6
标签: c++ reverse singly-linked-list