[Bug] 两个链表,交错组合为另一个链表

本文揭示了一段看似正确的代码中存在的错误,并解释了错误的原因。通过深入分析,读者可以理解在编程过程中避免类似陷阱的方法。
ListNode dummy3 = new ListNode(-1);
ListNode pre = dummy3;
while(head2!=null&&head1!=null){
     pre.next=head1;
     ListNode head1next = head1.next;
     head1.next=head2;
     ListNode head2next = head2.next;
     head2.next=null;
     pre=head2;
     head1=head1next;
     head2=head2next;
 }

上面这段代码时正确的写法。

 1 ListNode dummy3 = new ListNode(-1);
 2 ListNode pre = dummy3;
 3 while(head2!=null&&head1!=null){
 4      pre.next=head1;
 5      pre.next.next = head2;
 6      //ListNode head1next = head1.next;
 7      //head1.next=head2;
 8      //ListNode head2next = head2.next;
 9      //head2.next=null;
10      pre=head2;
11      head1=head.next;
12      head2=head.next;
13  }

上面的代码时错误的,在第5行代码执行完毕之后实际上head1的next指针已经丢失了,原因是在第5行代码执行的时候实际上是讲head1的next指针进行了重新定义,指向了head2,但是在更改这个指针之前,它的原先的next指针并没有修改,这个next指针将成为新的head1.

 

谨慎之!

转载于:https://www.cnblogs.com/deepblueme/p/4743371.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值