遍历链表Java的实现
所以我读了几篇关于这个主题的文章,但它们都提到了通过已经由Java实现的链表进行迭代;例如,遍历链表Java的实现,java,list,linked-list,nodes,Java,List,Linked List,Nodes,所以我读了几篇关于这个主题的文章,但它们都提到了通过已经由Java实现的链表进行迭代;例如,LinkedList=newLinkedList()。然后继续说,使用for循环遍历链表。然而,我正在尝试实现我自己的链表,我不知道如何遍历它们。换句话说,我有以下代码: class Node { private Node next = null; private int data; public Node(int d) { data = d; }
LinkedList=newLinkedList()代码>。然后继续说,使用for循环遍历链表。然而,我正在尝试实现我自己的链表,我不知道如何遍历它们。换句话说,我有以下代码:
class Node {
private Node next = null;
private int data;
public Node(int d) {
data = d;
}
void appendToTail(int d) {
Node end = new Node(d);
Node n = this;
while(n.next != null) {
n = n.next;
}
n.next = end;
}
void print() {
Node n = this;
while(n.next != null) {
System.out.println(n);
n = n.next;
}
}
public static void main(String [] args) {
Node x = new Node(4);
x.appendToTail(5);
x.print();
}
}
我编写的print()
函数是我尝试遍历链表的努力。但是,它不起作用。有没有人知道如何在链表中迭代,只要你自己实现了链表?Change
while(n.next != null)
到
因为在循环内部,您正在打印当前节点n
,然后通过以下方式将其指向下一个节点:n=n.next代码>更改
while(n.next != null)
到
因为在循环内部,您正在打印当前节点n
,然后通过以下方式将其指向下一个节点:n=n.next
您应该检查当前节点是否为空,而不是下一个节点。因为这样会错过列表的最后一个节点,next
部分将为最后一个节点的null
,循环将不会执行
您需要打印节点的部分数据。您尚未为节点类定义toString
方法
void print() {
Node n = this;
while(n != null) {
System.out.println(n.data);
n = n.next;
}
}
您可以如下为您的节点
类定义toString
,然后您可以在System.out
语句中直接打印节点
对象
@Override
public String toString() {
return "Node{" +
", data=" + data +
'}';
}
您应该检查当前节点是否为空,而不是下一个节点。因为这样会错过列表的最后一个节点,next
部分将为最后一个节点的null
,循环将不会执行
您需要打印节点的部分数据。您尚未为节点类定义toString
方法
void print() {
Node n = this;
while(n != null) {
System.out.println(n.data);
n = n.next;
}
}
您可以如下为您的节点
类定义toString
,然后您可以在System.out
语句中直接打印节点
对象
@Override
public String toString() {
return "Node{" +
", data=" + data +
'}';
}
您应该检查n
是否为空,而不是n。next()
::
但是您拥有for
循环的所有方面(初始状态、终止条件和迭代表达式),因此这可以更好地表示为for
循环:
for (Node n = this; n != null; n = n.next)
System.out.println(n.data);
您应该检查n
是否为空,而不是n。next()
::
但是您拥有for
循环的所有方面(初始状态、终止条件和迭代表达式),因此这可以更好地表示为for
循环:
for (Node n = this; n != null; n = n.next)
System.out.println(n.data);
但是,它不工作,但是,它不工作,谢谢你!我只需要确保我做了System.out.println(n.data)
。是的,你应该打印node.data
,欢迎你。谢谢!我只需要确保我做了System.out.println(n.data)
。是的,您应该打印node.data
,我们欢迎您。