public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode l=new ListNode();
ListNode temp=l;
int bit=0;//等于1时需要进位
while(l1!=null||l2!=null){
int sum=0;
if(l1!=null){
sum+=l1.val;
}
if(l2!=null){
sum+=l2.val;
}
sum+=bit;
bit=sum/10;
temp.next=new ListNode(sum%10);
temp=temp.next;
if(l1!=null)
l1=l1.next;
if(l2!=null)
l2=l2.next;
}
if(bit>0)
temp.next=new ListNode(bit);
return l.next;
}
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
*
*/

我有个疑问,经过经过temp=l之后,两个变量指向的应该是同一个地址,为什么能用变量temp进行链表的操作,用l却不行呢?求解释
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- CSDN专家-天际的海浪 2021-10-06 22:22关注
temp是需要循环的temp=temp.next指向下一个节点
因为最后要 return 返回 l.next 链表的头指针。所以l不能被重新指向下一个节点本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用