このコードは、1-> 2 -> 3 -> 4 のようなリンクリストを 1->3-2->4 (つまり、左が奇数で右が偶数) に変換しますが、oddEvenSplitter
関数によって引き起こされる問題は除きます。このコードは参照を値で変更します。入力が参照であるような状況でコードを再利用するにはどうすればよいですか?
public void oddEvenSplitter (Node head, Node current, Node temp) {
if (head == null) {
head = temp;
current = temp;
} else {
current.next = temp;
current = temp;
}
}
public void oddFirst( ) {
if (first == null) {
throw new NoSuchElementException();
}
Node temp = first;
Node oddhead = null;
Node odd = null;
Node evenhead = null;
Node even = null;
while (temp != null) {
if (temp.element % 2 == 0) {
oddEvenSplitter(evenhead, even, temp);
} else {
oddEvenSplitter(oddhead, odd, temp);
}
}
if (oddhead != null) {
odd.next = evenhead;
first = oddhead;
}
}