2013-11-02 2 views
0

링크드리스트의 마지막에 요소를 재귀 적으로 추가하려고합니다. 그러나 아무 것도 추가되지 않는 것 같습니다. 개인 헬퍼 메서드를 사용하므로 참조를 매개 변수로 사용할 수 있습니다. 그러나 예외가 발생하지는 않습니다. 테스트 케이스에 아무 것도리스트에 추가되지 않았 음을 보여줍니다! 내가 뭘 잘못하고 있는지 알지 못해 어디에서 시작해야할지 모르겠다. 귀하의 도움은 매우 감사하겠습니다.링크드리스트의 끝에 반복적으로 노드 추가

public void addLast(E element) { 
    addLast(element,first); 
} 

private void addLast(E element, Node ref) { 
    if (ref == null) { 
     ref = new Node(element); 
     n++; 
      } else if (ref.next == null) { 
        ref.next = new Node(element); 
        n++; 
    } else { 
     addLast(element, ref.next); 
    } 
} 
+0

우선 n은 무엇입니까? 문제가 목록이 항상 비어 있습니까? '예'인 경우 첫 번째 if 블록에서 'ref = new Node (element)'를 first = new Node (요소)로 변경해보십시오. 'first'는 목록의 헤드 포인터입니다. – slider

+0

빈 LinkedList를 생성하는 예제를 게시 할 수 있습니까? – vandale

답변

0
private void addLast(Node node){ 

    while(root.next != null){ 
      root = root.next; 

      if (root.next == null){ 
       root.next = node; 
       break; 
      } 
    } 
} 

하지 재귀 당신이 그것을 필요로하지 않기 때문에 ...

5

당신이 뭔가를 할해야합니다. 설명은 this link을 참조하십시오.

private Node addLast(E element, Node ref) { 
    if (ref == null) { 
     ref = new Node(element); 

    } else { 
     ref.next = addLast(element, ref.next); 
    } 
    return ref; 
}