public CharList(CharList l)
{
// Whatever method your CharList provides to get the
// first node in the list goes here
CharNode pt = l.head();
// create a new head node for *this* list
CharNode newNode = new CharNode();
this.head = newNode;
// Go through old list, copy data, create new nodes
// for this list.
while(pt != null)
{
newNode.setCharacter(pt.getCharacter());
pt = pt.getNext();
if (pt != null)
{
newNode.setNext(new CharNode());
newNode = newNode.getNext();
}
}
}
好,这是一个复制构造函数。我不太明白的是最后两行。
newNode.setNext(new CharNode());
newNode = newNode.getNext();
基本上,程序应该在节点中创建一个节点,以便它指向指向LinkedList的另一个元素。这是第一行应该做的,也是正在做的;但是,不是在节点内部定义节点,而是使用newNode = newNode. getnext ();只是覆盖指向另一个节点的节点,使第一行无用。有什么我不明白的吗?
pt = pt.getNext();
这一行没有问题,因为pt可以被覆盖,因为pt是我们作为属性传递的LinkedList中的一个元素,但是其他两行对我来说没有意义。
代码正确。它没有覆盖,只是移动到下一个节点并设置其值。
Step1 : Set next node using newNode.setNext(new CharNode());
Step2 : Move to next node using newNode = newNode.getNext();
Step 3 : Set value for next node newNode.setCharacter(pt.getCharacter());
希望能说清楚。