链表题目,例如两数和相加,最后需要 tail.next = new ListNode(carry);
作用在于:
1. 链表结构变化
- 原链表状态:假设当前
tail
指向链表最后一个节点,其next
指针为null
。 - 操作后:通过
new ListNode(carry)
创建新节点,并将其赋值给tail.next
。此时:- 原尾节点的
next
指针指向新节点。 - 新节点的
next
默认初始化为null
(假设ListNode
构造函数未显式设置)。
- 原尾节点的
2. 链表的更新
- 仅添加节点:该语句仅完成新节点的链接,但 未更新
tail
指针。这意味着:tail
仍指向原尾节点,而非新的末尾节点。- 若需后续继续操作链表尾部,手动更新
tail
(如tail = tail.next
)
若省略 tail = tail.next
,后续插入操作会错误地覆盖新节点
new的左边必须有个next,否则这个new出来的内存空间不会和原本链表头相连。
因为本身next指向的是空,还没有指向一个确切的内存地址,所以temp=a->next是没有意义的,就相当于temp=null;
必须temp先与head绑定,再给里面的next开辟内存空间