代码中的next指针是否需要回收?

来源:5-1 链表,在节点间穿针引线 Reverse Linked List

慕慕9414451

2017-11-12

老师,在课程5-1中,while循环每次都声明了一个next指针。请问这些指针是否需要回收呢?

或者更一般地,指针一般何时需要回收?

谢谢老师!

写回答

3回答

liuyubobobo

2017-11-13

一个简单的原则就是有new才应该有delete,也就是有内存空间的申请才应该在这部分内存空间使用完毕后进行回收。


在这个问题中,传来的head指针指向了一个链表,链表中每个节点的内存空间已经申请好了。算法的任务是让你反转整个链表,返回翻转后整个链表的新的头指针返回。我们在这个算法里不能对这个链表节点的内存进行回收,如果回收了,我们返回的链表就是空了。

2
0

PeterSix3244453

2018-03-15

ListNode* reverseList(ListNode *head) {
    ListNode *prev = NULL;
    ListNode *cur = head;
    ListNode *next = NULL;
    while (cur != NULL) {
        next = cur->next;// (1)这步视频里面是ListNode* next = cur->next;
        cur->next = prev;
        prev = cur;
        cur = next;
    }
    return prev;
}

波波老师好:
我觉得“慕慕9414451”同学,是不是想说(1)处不要每次都初始化一个指针,虽然所占内存空间不大。
但是链表如果很大很长的话,这些积累是不是还有些影响?



0
4
算法请爱我emmm
回复
liuyubobobo
我也一直有这个疑问,今天终于弄懂了!老师很赞!
2019-07-28
共4条回复

慕慕9414451

提问者

2017-11-13

非常感谢老师,明白了。

0
0

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7408 学习 · 1150 问题

查看课程