2017-11-12 3 views
1

Dies ist mein Code für die Methode getMin(). Ich kann die Methode nicht aufrufen, um in die While-Schleife zu gelangen.So finden Sie das minimale Element einer doppelt verketteten Liste in Java

public E getMin() {

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

Wenn meine Antwort auf diese Frage - https://stackoverflow.com/questions/47248610/find-the-minimum-element-in-a-doubly-linked-list-not-working - funktioniert nicht, Sie können einen Kommentar schreiben anstatt meine Antwort als neue Frage zu posten. – Eran

Antwort

1

Sieht aus wie ein Bug/Tippfehler in Ihrer while-Schleife ist. Versuchen Sie stattdessen (ich auch einige kleinere Aspekte als auch verbessert):

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; 

Im allgemeinen Fall können Sie nicht besser als eine lineare Suche auch für doppelt verkettete Listen;)

Verwandte Themen