💡JavaScript Solution
The idea\n1. Split the linked list from the middle using 2 pointers into part1& part2\n2. Reverse part2\n3. Merge part1 and part2\njavascript\n/**\n * @param {L
### The idea\n1. Split the linked list from the middle using 2 pointers into part1& part2\n2. Reverse part2\n3. Merge part1 and part2\n``` javascript\n/**\n * @param {ListNode} head\n * @return {void} Do not return anything, modify head in-place instead.\n */\nvar reorderList = function(head) {\n    \n    if (!head || !head.next) return; \n    \n    // find the middle point\n    let slow=head, fast=head;\n    while(fast.next && fast.next.next) {\n        slow = slow.next;\n        fast = fast.next.next;\n    }\n    \n    // split into two part head & part2\n    let part2 = slow.next;\n    slow.next = null;\n    \n    // reverse part 2\n    let prev = null, cur = part2, next = cur.next;\n    while(cur) {\n        next = cur.next;\n        cur.next = prev;\n        prev = cur;\n        cur = next;\n    }\n    \n    part2 = prev;\n    \n    // merge head & part2\n    while(head && part2) {\n        let p1 = head.next;\n        let p2 = part2.next\n        head.next = part2;\n        head.next.next = p1;\n        part2 = p2;\n        head = p1;\n    }\n    \n    return head;\n};\n```
['JavaScript']