Reorder List
Given a singly linked list: A0→A1→…→An-1→An, reorder it to: A0→An→A1→An-1→A2→An-2→…
Given 1->2->3->4->5 its reorder is 1->5->2->4->3.
It is recommended do this in-place without altering the nodes’ values.
Algorithm:
- Divide linked list into two equal parts by using by Runner algorithm {@link SplitCLL }
- Reverse the second linked list {@link ReverseList }
- Merge these linked list {@link SortedListMerger}
Latest Source Code:
Github: ReorderList.java
Output:
1 2 3 4 5 1 5 2 4 3 1 2 3 4 5 6 1 6 2 5 3 4