https://oj.leetcode.com/problems/reorder-list/
这个题一开始我以为在recorderList函数里面输出record之后的序列,实际上这个函数只是要求把数据进行record就行了,head可以在这个函数外调用,类似于c++中的引用和
指针。还是对java不算熟啊。。。。
public void reorderList(ListNode head) {
ListNode head1 = head,head2,head3;
int n=0;
while(head1!=null){
head1 = head1.next;
n++;
}
if(n<=2){
return;
}
if(n==3){
head1 = head.next;
head2 = head1.next;
head.next = head2;
head2.next = head1;
head1.next = null;
return;
}
int m;
if(n%2==1){
m = n/2;
}
else{
m = n/2-1;
}
head1=head;
for(int i=1;i<=m;i++)
head1= head1.next;
head2 = head1.next;
head3 = head2.next;
head1.next = null;
head2.next = null;
while(head3!=null){
head1 = head2;
head2 = head3;
head3 = head3.next;
head2.next = head1;
}
head2.next = head1;
head1 = head;
head3 = new ListNode(0);
head = head3;
while(head1!=null&&head2!=null){
head3.next = head1;
head1 = head1.next;
head3 =head3.next;
head3.next = head2;
head2 = head2.next;
head3 = head3.next;
}
while(head1!=null){
head3.next = head1;
head3 = head3.next;
head1 = head1.next;
}
while(head2!=null){
head3.next = head2;
head3 = head3.next;
head2 = head2.next;
}
head3 = head.next;
head.next =null;
head = head3;
}