Redian新闻
>
删除node从list, 这个有内存泄露么,怎么释放内存,对于那个被删除的节点?
avatar
删除node从list, 这个有内存泄露么,怎么释放内存,对于那个被删除的节点?# JobHunting - 待字闺中
C*n
1
class Solution {
public:
ListNode *removeNthFromEnd(ListNode *head, int n) {
if (n==0 || !head){
return NULL;
}

ListNode* res = new ListNode(0);
res->next = head;
head = res;

ListNode* p=head;
ListNode* q=head;

for (int i=0;i<=n;i++){
if (q){
q=q->next;
}else{
return NULL;
}
}

while (q){
p=p->next;
q=q->next;
}

p->next=p->next->next;

return head->next;
}
};
删除node从list, 这个有内存泄露么,怎么释放内存,对于那个被删除的节点?
avatar
J*9
2
What do you return?
The new list or the deleted node?
Assume you return the new list:
1) Free res before return
tmp = head->next;
head->next = NULL;
free(head);
return tmp;
2) tmp = p->next;
p->next=p->next->next;
free(tmp);
3)
The Nth one shall be the one after p, so
for (int i=0;i4) return NULL; ==> return head->next?
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。