5-6 removeNthFromEnd retNode 的作用
来源:5-6 链表与双指针 Remove Nth Node Form End of List

瞬息之间
2019-04-14
bobo老师,对于Remove Nth Node From End of List的cpp solution 我做了改动后对于 输入是 ([1],1) 的时候产生了use-after-free 的故障, 能麻烦指出一下原因吗。
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
ListNode* dummyHead = new ListNode(0);
dummyHead->next = head;
int length = 0;
for(ListNode* cur = dummyHead->next ; cur != NULL ; cur = cur->next)
length ++;
int k = length - n;
assert(k >= 0);
ListNode* cur = dummyHead;
for(int i = 0 ; i < k ; i ++)
cur = cur->next;
ListNode* delNode = cur->next;
cur->next = delNode->next;
delete delNode;
// ListNode* retNode = dummyHead->next;
delete dummyHead;
return head;
}
};
在最后的时候没有新建指针 retNode 而是返回了原先的head, 在leetcode中只通过了1/280 的testcase。
报错是:
谢谢~
写回答
1回答
-
liuyubobobo
2019-04-14
在只有一个元素的时候,你删掉的就是那个唯一的节点,也就是head。head被释放掉了,又返回head,报错:)
继续加油!:)
00
相似问题