2018.12月华南理工408考研题链表题,自己想着做了一下,不知道答案
ListNode getNewNode(ListNode head){
ListNode node1=head;//指向中间位置
ListNode node2=head;
while(node1!=null&&node2!=null){
node1=node1.next;
node2=node2.next.next;
}
ListNode mid=node1;
ListNode midNext=null;
ListNode midPre=null;
//反转从中间到最后的链表
while(mid!=null){
midNext=mid;
mid.next=midPre;
midPre=midNext;
mid=midNext.next;
}
//此时midPre指向最中间的节点,同时也是从中间到最后反转之后的节点。
ListNode t=head;
while(head!=null&&midPre!=null){
head.next=midPre.next;
head.next=t.next;
midPre=midPre.next;
}
return head;
}
网友评论