単一リンク リスト内の重複ノードを削除するコードを作成しようとしています。
削除された重複は、次のノードに格納されている数が変更されるまでのみ削除されます。
たとえば、入力リストが の[ 0 0 0 0 1 1 0 0 0 3 3 3 1 1 0 ]
場合、
出力リストは[ 0 1 0 3 1 0 ]
です。
私はコードを書き込もうとし、複数のことを試しました。関数を呼び出すたびに、元のリンクされたリストまたは元の頭と元の尾だけが返されます。
一時的なリンク リストを作成し、そのリストに値を格納しようとしましたが、正しく返されません。
私の最新の試みは以下のコード スニペットであり、元のリストの先頭と末尾のみを返します。
私の質問は、このコードをどのように進めるべきですか? 私はそれを描いて視覚化しようとしましたが、役に立ちませんでした。
私は、正しい方向へのプッシュだけで書かれるコードを探しているわけではありません。
私が今持っているコードは行き止まりで、最初からやり直さなければならないかもしれないと思います。
答えを得るためにこのコードの実装を開始する最良の方法は何ですか?
public void squish() {
SListNode current = head;
SListNode iterator = current.next;
while (iterator != null){
if (current.equals(iterator)){
iterator = iterator.next;
} else {
if (current.next.equals (null)) {
break;
} else {
head.next = iterator;
current = iterator;
}
}
}
}