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