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;
    }
}

  

posted @ 2017-10-12 05:58  Weiyu Wang  阅读(118)  评论(0编辑  收藏  举报