java链表。这个程序不打印8.Why?

java linked list .This program does not print 8.Why?

单向链表。

  1. 我创建节点
  2. 添加新节点

实施:

//create node
class Node {
  int data;
  Node next;

  Node(int data) {
    this.data = data;
    next = null;
  }
}
public class LinkedList {

  //Add new node
  public static void add(Node root, int data){
    Node temp;
    while (root != null) {
      root = root.next;
    }
    temp = new Node(data);
    root = temp;
  }
  //print node
  public static void print(Node root){
    while (root != null) {
      System.out.println(root.data);
      root = root.next;
    }
  }

  public static void main(String[] args) {
    Node root ;
    Node iter;
    root = new Node(7);
    iter = root;
    add(iter, 8);
    print(iter);
  }

}

我从事数据结构工作。我想链接列表,但程序失败了。该程序不打印 8.Why?

我哪里出错了?

while(root!=null){
   root=root.next;
}
 temp=new Node(data);
 root=temp;

此处:root 一次是 NULL。 在循环之后,您不会在链的最后一个元素分配下一个元素。您不会在您的链中执行任何操作,因为 root 指向一个 NULL 值并且不引用您链中的元素。
此外,为方法参数赋值是没有意义的,因为在方法退出时不考虑它。

如果你想在节点链的末尾添加节点,你应该将代码替换为:

while(root.next !=null){
   root=root.next;
}
temp=new Node(data);
root.next=temp;

你可以写出更有意义的名字:

Node lastElement = root;
while(lastElement.next !=null){
   lastElement=lastElement.next;
}
temp=new Node(data);
lastElement.next=temp;

无论如何,一个更简单的解决方案是在您的 class 中有一个字段来存储链的最后一个节点。遍历所有元素以在末尾添加一个元素不是很有效。