在Java中将节点添加到列表的开头?

时间:2015-07-04 19:40:07

标签: java algorithm linked-list

我正在通过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();

2 个答案:

答案 0 :(得分:3)

你无法

Node firstNode = new Node();

稍后在代码中 - 因为那将尝试声明一个与现有变量同名的新局部变量。 (您可以拥有一个与实例字段或静态字段同名的局部变量,但是您不能同时在范围内有两个同名的局部变量。)相反,这一行:

firstNode = new Node();

现有本地变量指定一个新值。

答案 1 :(得分:1)

第一次分配给firstNode时,您需要定义它:

Node firstNode = new Node();

一旦定义了,你就已经有了一个名为firstNode的变量,所以你不能重新定义它,只需为它分配一个新值 - 在这种情况下,是一个新创建的{{ 1}}:

Node