1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
   | import utils.ListNode;
  public class ReorderList {     
 
 
 
 
 
 
 
 
 
 
 
 
      public static void main(String[] args){         ListNode a = new ListNode(1);         ListNode b = new ListNode(2);         ListNode c = new ListNode(3);         ListNode d = new ListNode(4);         a.next = null;
          a.next = b;
 
 
 
          reorderList(a);     }     public static void reorderList(ListNode head) {             ListNode dump = head;             ListNode slow = head;             ListNode fast = head;             while(fast!=null && fast.next != null){                 slow = slow.next;                 fast = fast.next.next;             }             ListNode mid = slow.next;             ListNode l1 = head;             ListNode l2 = mid;
 
 
              while(head.next != l2){                 head = head.next;             }             head.next = null;
 
                           ListNode p = l2;             ListNode q = p.next;             boolean first = true;             while(q!= null){                 ListNode t = q.next;                 q.next = p;                 if (first){                     p.next = null;                     first = false;                 }                 p = q;                 q = t;             }
              l2 = p;             p = l1;             q = l2;
              print(l1);             print(l2);
                           while(l2 != null){
                  p = p.next;                 q = q.next;
                  l1.next = l2;                 l2.next = p;
                  l2 = q;                 l1 = p;
              }             print(dump);         }
          public static void print(ListNode head){             ListNode t = head;             while(t!= null){                 System.out.print(t.val+" ");                 t = t.next;             }             System.out.println();         } }
   |