2017-11-12 17 views
1

이것은 getMin() 메서드에 대한 코드입니다. while 루프에 들어가는 메소드를 가져올 수 없습니다. 당신의 while 루프 버그/오타가 같은Java에서 이중 연결 목록의 최소 요소를 찾는 방법

공공 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

되는 경우) 이 질문에 대한 내 대답 - https://stackoverflow.com/questions/47248610/find-the-minimum-element-in-a-doubly-linked-list-not-working - 작동하지 않습니다, 당신은 코멘트를 쓸 수 있습니다 내 대답을 새로운 질문으로 게시하는 대신 – Eran

답변

1

보인다. (I는 또한뿐만 아니라 몇 가지 사소한 부분을 개선) 대신을 시도해보십시오

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; 

을 일반적인 경우에, 당신은 선형 검색 심지어 이중 연결리스트에 대한보다 더 할 수 없습니다