节点"dynamic"变量吗?


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

希望能说清楚。

相关内容

  • 没有找到相关文章