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 中的一个元素,但其他两行对我来说没有意义。