2017-01-22 5 views
-1

私は、インサート機能は、このない練習のためのリンクリストを作っ: java無限ループを伴う同じオブジェクトをユーザーが使用するのを防ぐ方法を教えてください。

Node node = new Node(10); 
    list.insert(node); 
    list.insert(node); 

は私が持っていますか:問題は、ユーザが二度同じオブジェクトを挿入する場合、それは無限ループの原因となることである

public void insert(Node node){ 
    if(this.head == null){ 
     this.tail = node; 
    } 

    node.next = this.head; 
    this.head = node; 
    this.length++; 
} 

ノードインスタンスがすでにリストに存在するかどうかをチェックする

+0

(ノードに入れる)_values_を挿入してはいけませんか?ノードを挿入できるようにしておくと、自由にコントロールでき、あなたのリストを台無しにすることができます。 – byxor

+0

ノードはユーザーに公開しないでください。リストの内部機能である必要があります。ノード自体は、ユーザーがアクセスできないようにする必要があります。ユーザーが2つの値を2回入力すると、リストは2つのノードを作成するはずです。それぞれに同じ参照が含まれています。 – flakes

答えて

0

私はコードの下にテストしていないが、それはあなたの問題を解決することがあります。

public void insert(Node node) 
{ 
    if(this.head == null) { 
     this.head = node; 
     this.tail = node; 
    } 
    else { 
     this.tail.next = node; 
     this.tail = this.tail.next; 
    } 

    this.length++; 
} 

ちなみに@Brandonイボットソンと@flakesが示唆されているように、利用者からのノードで操作を非表示にします。

関連する問題