节点是“动态”变量吗?

时间:2013-03-31 15:15:50

标签: java linked-list nodes

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

1 个答案:

答案 0 :(得分:1)

代码是正确的。它并没有过时,只是转移到下一个节点并设置其值。

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());

希望澄清。