2013-04-27 166 views
1

請考慮下面的鏈接列表代碼。基本上我在LinkedList類中創建了三個節點,並試圖顯示內容,但是我在DisplayLinkedList()方法中做了錯誤的操作。現在,我讓我的輸出如下:如何顯示LinkedList的所有內容?

B 
C 
null 

我想如下顯示它: 一個 B上分別

℃。任何人都可以告訴我在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

不知道如果是拼寫錯誤,但不應該設置下一個'this.next = data'? – 2013-04-27 05:15:11

+0

謝謝你指出。我糾正了這一點! – Tan 2013-04-27 07:17:14

回答

5

您正在檢查curr是否爲null,然後遞增,這會使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 2013-04-27 07:18:23

5

你的問題是在你的循環中DisplayLinkedList。由於您在打印之前前進到下一個節點,因此您「錯過」了第一個節點。

它應該是:

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

此外,它看起來像你跟蹤的prev不使用它。該方法的簡化版本可能是:

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

謝謝你的回答! – Tan 2013-04-27 07:17:30

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

使用此代碼來調用displayLink()方法你節點類的displayLink()方法將

public void displayLink(){ 
    System.out.print("\nDATA= "+data); 
} 
+0

試試這個代碼它肯定會幫助你很多 – 2013-04-27 05:57:20

+1

謝謝你的回答! – Tan 2013-04-27 07:22:39

相關問題