java链表。这个程序不打印8.Why?
java linked list .This program does not print 8.Why?
单向链表。
- 我创建节点
- 添加新节点
实施:
//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 中有一个字段来存储链的最后一个节点。遍历所有元素以在末尾添加一个元素不是很有效。
单向链表。
- 我创建节点
- 添加新节点
实施:
//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 中有一个字段来存储链的最后一个节点。遍历所有元素以在末尾添加一个元素不是很有效。