[英]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.