如何显示LinkedList的所有内容?

Tan*_*Tan 1 java linked-list data-structures

请考虑以下链接列表代码.基本上我在LinkedList类中创建了三个节点并尝试显示内容,但我在DisplayLinkedList()方法中做错了.现在我的输出如下:

B
C
null
Run Code Online (Sandbox Code Playgroud)

我想按如下方式显示:A 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();



}

}
Run Code Online (Sandbox Code Playgroud)

小智 5

您正在检查curr是否为空,然后递增,这使得curr成为您尝试打印的空值.

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

}
Run Code Online (Sandbox Code Playgroud)

先做印刷应该有所帮助.

while(curr != null){
    System.out.println(curr);
    prev = curr;
    curr = curr.getNext();
}
Run Code Online (Sandbox Code Playgroud)


小智 5

你的问题在你的循环中DisplayLinkedList.您"错过"第一个节点,因为您在打印之前前进到下一个节点.

它应该是:

while(curr != null) {
   System.out.println(curr);
   prev = curr;
   curr = curr.getNext();    
}
Run Code Online (Sandbox Code Playgroud)

此外,看起来你正在跟踪prev而不使用它.该方法的简化版本可以是:

public void DisplayLinkedList() {
    Node curr = list;
    while(curr != null) {
        System.out.println(curr);
        curr = curr.getNext();
    }
}
Run Code Online (Sandbox Code Playgroud)