簡體   English   中英

為什么我不能打印鏈表中的最后一個元素

[英]Why can I not print the last element in my linkedlist

我已經實現了一個基本的鏈表,它包含一個 Node 類和一個 Linkedlist 類,Node 類是一個 java 泛型。

我只是想知道,為什么我的最后一個元素不打印,當我做一個打印語句時,這里是我的類

鏈表類

  /**
 * A linked list is a sequential list of nodes that hold data that point to nodes also containng data
 *
 * Linked lists are used in Lists, Queues and Stacks
 * Great for creating circular lists
 *
 * Head = first node in a linkedlist
 * Tail = last node in a linkedlist
 * Pointer = reference to the next node in a linkedlist.
 * Node = object containing data.
 */
public class Linkedlist<T> {
    Node Head;

    public Linkedlist(Node n)
    {
        Head = n;
    }

    public boolean contains(T obj)
    {

        Node n = Head;
        while (!(n.getNextNode().equals(null))){
            System.out.println(n.getNextNode());  //Last element does not print here
            n = n.getNextNode();
        }
        return false;
    }


}

節點類

 public class Node<T> {

    Node next = null;
    T data;


    public Node(T data){
        this.data = data;
    };

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

    public Node getNextNode()
    {
        return this.next;
    }

    public T getData()
    {return this.data;}

    public void printNode()
    {
        System.out.println(getData());
    }

}

感謝您的幫助,我正在使用 contains 方法檢查我的 while 循環是否正在遍歷所有元素。 (我認為是這樣,但它只是停在最后一個元素而不是進一步)。

任何幫助將不勝感激

您必須重新考慮如何打印數據。 目前,您從不打印Head節點的數據,因為您只打印下一個節點( n.getNextNode() )。 當下一個元素為空時,您也會中斷循環。 這會導致最后一個元素不被打印,因為getNextNode()將在 print 調用之前返回 null。

而是這樣:

public boolean contains(T obj) {
    Node n = Head;
    do {
        System.out.println(n.getData()); // print data of current node
        n = n.getNextNode(); // move to next node
    } while (n != null); // break if we are behind next node. n is null
    return false;
}

或者如果您可能有一個空列表(傳遞給構造函數的節點為空):

public boolean contains(T obj) {
    Node n = Head;
    while (n != null) {
        System.out.println(n.getData());
        n = n.getNextNode();
    }
    return false;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM