2013-03-31 33 views
0
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

該代碼是正確的。它不是過度修改它只是移動到下一個節點並設置它的值。

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

希望澄清。

+0

到底! 1+爲一個深思熟慮的答案! –

+0

ahhh,節點的值可以不同於原來的值?因爲我被告知節點對象包含一個引用另一個節點對象和類對象(如汽車)的數字。 – user2089523

+0

您能否詳細說明「節點的價值可以與原來的價值不同?」 。每個節點對象都包含下一個節點的引用,即從一個節點繼續遍歷到下一個節點,直到到達最後 – Lokesh