2016-04-09 11 views
0

私は二重にリンクされたリンクされたリストをトラバースしようとしていますが、無限ループが発生するようです。私の目標は、リストの中で最も最初に出現した要素を見つけることです。私は要素を見つけるが、私のプログラムは繰り返しているようだ。それをループから止める唯一の方法は、壊すことです。別の方法が必要です。ありがとう。あなたはどのような場合に進めるために必要 {Javaで二重にリンクされたリンクリストをトラバースするには?

Node<E> temp; 
    temp = head; 

    while(temp.next != null){ 

     if(temp.value==obj){ 
      System.out.println("YES"); 
     } 

     else{ 
      temp = temp.next; 
     } 

     System.out.println("\nNO"); 
    } 

}

+0

は '破る置く;'にあなたのif条件。値が見つかると、ループから抜けず、else文に到達しません。 – piyush121

+0

@ piyush121私はその解決策を知っていますが、別の方法が必要です。 – Pasoon

+0

@ P.A。ブール変数を使用するか、またはリターンします。 –

答えて

2

。スワップ印刷「ノー」と次の割り当て:

Node<E> temp = head; 
while(temp != null) { // Don't check for next here or miss the last element 
    if (temp.value == obj) { 
    System.out.println("YES: " + value); 
    break; 
    } 
    System.out.println("NO: " + value); 
    temp = temp.next; 

    // Loop check (if needed) 
    if (temp == head) { 
    break; 
    } 
} 

ショートバリアントそこにはループをしないと、あなたは唯一の「YES」か「NO」したい場合:

Node<E> temp; 
temp = head; 

while (temp != null && temp.value != obj) { 
    temp = temp.next; 
} 
System.out.println(temp == null ? "NO" : "YES"); 
+0

しかし、要素が見つかったとしてもループはループし続けます。 OPのコードには他のバグは修正されていますが、それは修正されていません。 –

+0

それはまだ無限にループしているようです。 – Pasoon

+0

オペレーションには、彼がすべての出現を必要とするのか最初のものが必要なのかは言及されていません。 –

関連する問題