F_G

许多问题需要说清楚就可以&&走永远比跑来的重要

导航

[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.

 

谨慎之!

posted on 2015-08-19 20:48  F_G  阅读(241)  评论(0编辑  收藏  举报