数据结构链表题

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;

}

你可能感兴趣的:(数据结构链表题)