2013-11-28 4 views
0

항목이있는 연결된 목록을 만들려고하는데 3 개를 추가하고 목록에 3 개의 항목이 있기 때문에 목록에 추가하는 것처럼 보입니다.링크 된 목록 추가 및 제거 기능

내 삭제 기능을 내가 세 가지 항목이 목록에서 목록에서 특정 항목을 삭제하려하지만 그냥 false를 반환하고 목록

public void tableInsert (T newItem) throws TableException { 
    if (head == null) 
     head = new Node(newItem); 
    else { 
     Node tmp = head; 
     while (tmp.getNext() != null) 
      tmp = tmp.getNext(); 
     tmp.setNext(new Node(newItem)); 
    } 
} 
에서 항목을 제거하지 않습니다 작동하지 않는 방법 이제까지

이 삭제 기능

public boolean tableDelete (KT searchKey) { 
    if (head.getItem() == searchKey) { 
     head = head.getNext(); 
     return true; 
    } 

    Node current = head.getNext(); 
    Node prev = head; 

    while (current!= null) { 
     if (current.getItem() == searchKey){ 
      prev.setNext(current.getNext()); 
      return true; 
     } 
     prev = current; 
     current = current.getNext(); 
    } 

    return false; 
} 
+0

코드 디버깅을 시도하십시오. – Taylor

+2

첫 번째 단계는 코드를 들여 쓰는 것입니다. 여기에 몇 가지 중괄호가없는 것 같습니다. – Keppil

+0

@NPE에서 제안한'equals' 것은 최상의 선택 인 것 같습니다. 두 번째 추측은'Node' 생성자에서 항목을 설정하는 것을 잊는 것입니다. – creichen

답변

1

나는 문제가 ==를 사용하여 평등 비교 의심이다. 이것은 객체 참조를 비교하는 반면, current.getItem()searchKey의 심도있는 비교를 수행해야 할 수도 있습니다.

0

"=="비교를 사용하면 객체의 참조 만 비교하므로 동일한 객체에 대한 참조를 비교하지 않으면 항상 false가됩니다. 당신의 목적은 비교 (인터넷에서 그것에 대해 꽤 재료)를 구현하거나 등

무엇을, 왜 당신은 객체 유형 T 삽입하지만, 객체 유형 KT를 삭제합니까 더 적절한 필드를 비교하여 자신의 함수를 포함해야합니까?

+0

기본적으로이 테이블 배열을 LinkedList 기반으로 복제하거나 변환하려고합니다 http://www.cs.vassar.edu/ ~ cs102/code/Packages/Tables/TableArrayBased.java – IronDome