我正在通过 Sedgewick 的算法 学习链表基础知识,并遇到了将节点添加到链表开头的问题。我注意到他们正在使用以下代码重新定义“第一个节点”:
Node firstNode = new Node();
Node secondNode = new Node();
Node thirdNode = new Node();
//create 3 initial nodes
firstNode.item = "to";
secondNode.item = "be";
thirdNode.item = "or";
//set order of nodes
firstNode.next = secondNode;
secondNode.next = thirdNode;
//add new node to beginning
Node oldFirstNode = firstNode;
//recreate first node
firstNode = new Node();
firstNode.item = "not";
firstNode.next = oldFirstNode;
为什么我们不这样做:Node firstNode = new Node();
?
不明白为什么它是 firstNode = new Node();
。
最佳答案
你不能
Node firstNode = new Node();
稍后在代码中 - 因为这将尝试声明一个与现有变量同名的新局部变量。 (你可以有一个与实例字段或静态字段同名的局部变量,但你不能同时在范围内有两个同名的局部变量。)相反,这一行:
firstNode = new Node();
为现有局部变量分配一个新值。
关于java - 在 Java 中将节点添加到列表的开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31224502/