143. Reorder List
class Solution { public void reorderList(ListNode head) { ListNode p=head, q=head; while(p!=null&&p.next!=null) { p=p.next.next; q=q.next; } if(q==null||q.next==null) return; ListNode l=new ListNode(0); l.next=q; while(q.next!=null) { ListNode t=q.next; q.next=t.next; t.next=l.next; l.next=t; } p=head; q=l.next; ListNode res=new ListNode(0); ListNode r=res; while(p.next!=null||q!=null) { if(p.next!=null) { r.next=p; p=p.next; r=r.next; } if(q!=null) { r.next=q; q=q.next; r=r.next; } } head=res.next; } }