2013-04-27 3 views
1

연결 목록에 대해 다음 코드를 고려하십시오. 기본적으로 LinkedList 클래스에 세 개의 노드를 만들고 내용을 표시하려고했지만 DisplayLinkedList() 메서드에서 잘못된 작업을하고 있습니다. 다음과 같이 지금은 내 출력을 받고 있어요 :LinkedList의 모든 내용을 표시하려면 어떻게해야합니까?

B 
C 
null 

내가 싶어 다음과 같이 표시 : B

각각 C. 아무도 내가 DisplayLinkedList() 메서드에서 잘못되었다고 말할 수 있습니까?

package MyPackage; 


class Node { 

String data; 
Node next; 

public Node(String data, Node next){ 

    this.data = data; 
    this.next = next; 

} 

public String getData(){ 
    return data; 
} 

public Node getNext(){ 

    return next; 
} 

public void setNext(Node n){ 
    next = n; 
} 

public String toString() { 
    return this.data; 
} 


} 

// CREATING LINKED LIST BACKWARDS AND APPLYING SOME OPERATIONS ON IT 


class LinkedList{ 

Node cNode = new Node("C", null); 

Node bNode = new Node("B", cNode); 

Node list = new Node("A", bNode); 


public void DisplayLinkedList(){ 

    Node prev = null; 
    Node curr = list; 

    while(curr != null){ 

     prev = curr; 
     curr = curr.getNext(); 
     System.out.println(curr); 

    } 


} 




public class LinkedListByME { 


public static void main(String[] args) { 


    LinkedList ll = new LinkedList(); 
    ll.DisplayLinkedList(); 



} 

} 
+0

이 몰라

public void displayLink(){ System.out.print("\nDATA= "+data); } 
될 것입니다 만약 오타가 아니지만 setNext에'this.next = data'가 있어야합니까? –

+0

그 점을 지적 해 주셔서 감사합니다. 나는 그것을 바로 잡았다! – Tan

답변

5

curr이 null인지 확인한 다음 THR을 증가 시키면 curr이 인쇄하려고하는 null 값이됩니다.

while(curr != null){ 
    prev = curr; 
    curr = curr.getNext(); 
    System.out.println(curr); 

} 

먼저 인쇄하는 것이 도움이됩니다.

while(curr != null){ 
    System.out.println(curr); 
    prev = curr; 
    curr = curr.getNext(); 
} 
+0

답변 해 주셔서 감사합니다. – Tan

5

문제가 루프에 DisplayLinkedList입니다. 첫 번째 노드를 인쇄하기 전에 다음 노드로 넘어 가기 때문에 첫 번째 노드를 "놓칩니다".

그것은해야한다 : 당신이 그것을 사용하지 않고 prev을 추적하는 것 같은

while(curr != null) { 
    System.out.println(curr); 
    prev = curr; 
    curr = curr.getNext();  
} 

또한,이 보인다. 이 방법의 단순화 된 버전이 될 수있다 :

public void DisplayLinkedList() { 
    Node curr = list; 
    while(curr != null) { 
     System.out.println(curr); 
     curr = curr.getNext(); 
    } 
} 
+0

답변 해 주셔서 감사합니다. – Tan

0
public void listTrasverse() { 
    if(isEmpty()) { 
     System.out.print("\nLIST IS EMPTY !!!"); 
    } else { 
     while(current!=null) { 
      current.displayLink(); 
      current=current.next; 
     } 
    } 
} 

사용이 코드는 노드 클래스의 displayLink() 메서드를 호출 displayLink() 방법은

가 이 에게
+0

이 코드를 사용해보십시오. 정말 도움이 될 것입니다. –

+1

답변 해 주셔서 감사합니다! – Tan

관련 문제