java内のリンクリスト内のすべてのevensを削除するにはどうすればよいですか?他の同様の質問は私を助けませんでした。私は可能な解決策を持っていますが、複雑すぎるようです。私はそれが動作するかどうかはわかりません。リンクリスト内のすべてのevensを削除する方法java
public class Node {
public int value;
public Node next;
public Node (int val) {
value = val;
}
public Node removeNode (Node root) {
if (root == null || (root.next == null && isOdd(root.value))) {
return null;
}
Node deep = root;
while (deep.next != null) {
deep = deep.next;
}
if (isOdd(deep.value)) {
for (Node x = root; x != null; x = x.next) {
if (isOdd(x.next.value)) {
x.next = x.next.next;
}
}
} else {
for (Node x = root; x.next != null; x = x.next) {
if (isOdd(x.next.value)) {
x.next = x.next.next;
}
}
}
if (isOdd(root.value)) {
root = root.next;
}
return root;
}
public boolean isOdd (int val) {
return (val % 2 == 1);
}
このソリューションを改善するにはどうすればよいですか?
リンクされたリストからノードを削除するロジックを混在させて、ノードの値が偶数であるかどうかを心配することは避けてください。後で他の条件に基づいてノードを削除する必要がある場合は、「ノードの削除」コードを別の機能にコピーし、ノードが削除されているかどうかを変更するだけです。述語(真/偽を返す関数)を取る関数を作成し、それを使ってノードが削除されているかどうかを判断します。 – Carcigenicate
@BrandonChen私は自分の投稿を編集してより簡単できれいにしました。それがあなたのために働くかどうか私に教えてください! – ParkerHalo