class Solution {
public ListNode Find(ListNode head){
ListNode slow = head;
ListNode quick = head;
while(slow!=null&&quick!=null){
if(quick.next!=null)
quick=quick.next.next;
else{
break;
}
slow=slow.next;
}
ListNode a = slow.next;
slow.next = null;
return a;
}
public void Reverse(ListNode t,ListNode d){
while(d!=null){
ListNode a = d;
d = d.next;
a.next = t.next;
t.next = a;
//d = d.next;
}
return;
}
public void reorderList(ListNode head) {
if(head==null){
return;
}
ListNode mid = Find(head);
ListNode t = new ListNode(0,null);
Reverse(t,mid);
ListNode res = head;
t=t.next;
while(res!=null&&t!=null){
ListNode tmp = t;
t=t.next;
tmp.next=res.next;
res.next = tmp;
if(res.next!=null)
res = res.next.next;
else{
return;
}
}
}
}