2017-11-12 3 views
1

これはgetMin()メソッドのコードです。私はwhileループに入るメソッドを得ることができません。Javaで二重にリンクされたリストの最小要素を見つける方法

公共E getMin(){あなたのwhileループのバグ/タイプミスがあるよう

Node<E> curr = header; 
Node<E> min = curr; 
E temporaryMinimum = header.getElement(); 
if(isEmpty()){ 
    return curr.getElement(); 
} 

while (curr != null) { 
    if (curr.getElement() != null) { 
     if (temporaryMinimum.compareTo(curr.getElement()) > 0) { 
      min = curr; 
      temporaryMinimum = curr.getElement(); 
     } 
      curr = curr.getNext(); 
     } 
    } 
    return curr.getElement(); 
} 
+1

の場合)この質問への私の答え - https://stackoverflow.com/questions/47248610/find-the-minimum-element-in-a-doubly-linked-list-not-working - は動作しません、あなたはコメントを書くことができます私の答えを新しい質問として投稿するのではなく、 – Eran

答えて

1

が見えます。 (私も同様にいくつかのマイナーな側面を改善)の代わりにこれを試してみてください:

if (isEmpty()) { return null; } 

Node<E> curr = header; 
Node<E> min = curr; 
E minElement = curr.getElement(); 

while (curr != null) { 
    if (curr.getElement() != null) { 
     if (minElement.compareTo(curr.getElement()) > 0) { 
      min = curr; 
      minElement = curr.getElement(); 
     } 
    } 
    curr = curr.getNext(); 
} 
return minElement; 

を一般的なケースでは、あなたが線形検索しても二重リンクリストのよりも良い行うことができません。

関連する問題