所以我从头开始构建LinkedList
。尽管代码有效,但我对两件事情感到困惑。引用,对象,LinkedList
当你写(public node root
)你正在创建一个对象的引用?换句话说,这是一个指针?如果是,在方法add()
我检查第一次迭代是否为根equals
到null
,它是和代码创建该类的一个实例。
我的问题来自方法Find()
。当根目录是null
,并且我设置了temp1=root
时,不是temp1
也将是null
因为root
是null
?或者temp1
指向root
而root
指向null
?这些有何不同?
编辑:如果temp1为null那么为什么方法find()工作?
public class LinkedList {
public Node root;
public void add(int data) {
if(root == null) {
root = new Node(data);
}
else {
Node temp1 = root;
Node temp = new Node(data);
while(temp1.getNext() != null) {
temp1 = temp1.getNext();
}
temp1.setNext(temp);
}
}
public boolean Find(int data) {
Node temp1 = root;
while(temp1 != null) {
if(temp1.getData() == data) {
return true;
}
temp1 = temp1.getNext();
}
return false;
}
}
如果你调用'查找()'那么你有可能已经被称为'加()'所以'root'没有更长的空。 – csmckelvey
你的意思是如果我调用root在find()中使用我是从add()调用它?我认为这是从顶部调用.. – Armin
当你说“如果我叫根”,我不确定你的意思。 'root'只是一个变量,你不会“调用”它。我在说,如果你有一个LinkedList实例并且你调用了Find()方法,那么这个列表可能会有一些内容调用之前的add()方法,这意味着root不再为null,因为它获取第一次调用add()时,就会返回值。即使您没有先调用add(),您的Find()也会有一个空检查来防止异常。 – csmckelvey