单链表。
- 我创建节点
- 添加新节点
实现:
//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.为什么?
我哪里出错了?
最佳答案
while(root!=null){
root=root.next;
}
temp=new Node(data);
root=temp;
此处:root
一次为NULL
。
循环之后,您不会在链的最后一个元素处分配下一个元素。您不会在链中执行任何操作,因为 root
指向 NULL
值并且不引用链中的元素。
此外,为方法参数赋值是没有意义的,因为方法退出时不会考虑它。
如果要将Node添加到节点链的末尾,则应将代码替换为:
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;
无论如何,一个更简单的解决方案是在类中添加一个字段来存储链的最后一个节点。迭代所有元素以在末尾添加元素的效率不是很高。
关于java链表。这个程序不打印8.为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40827659/