2015-09-06 162 views
3

我有一個關於添加創建/添加新節點到列表頂部的函數的問題。這是設置。鏈接列表,添加節點到列表頭添加節點的功能

在主程序中創建了一個頭。我們將列表設置爲空

IntNode* head = new IntNode(3,NULL); 

我的問題是關於將一​​個節點添加到列表頂部的函數。假定有列表中的至少一個節點。我知道它會創建一個新的節點,使在主程序中已經聲明瞭指針,它被傳遞,點(我們剛創建的)

void headInsert(IntNodePtr& head, int theData) 
{ 
    head = new IntNode(theData, head); 
} 

新的節點。然而,我對他在構造函數中的參數部分(而不是headInsert函數)「頭部」感到困惑。當我們在上面的IntNode構造函數中傳遞頭時,我對傳遞的是什麼感到困惑。那個頭設置了變量鏈接,指向哪個頭指向正確? ******我的問題是,它是否首先設置*鏈接(類變量)指向哪個頭指向哪裏,在這種情況下,節點的編號爲3,其列表指向NULL,然後使頭點到新的節點?換言之,任務的正確部分是先完成的?我對創建新節點時傳入的內容感到困惑。

class IntNode 
{ 
    public: 
    IntNode() {} 
    IntNode(int theData, IntNode* theLink) 
    : data(theData), link(theLink) {} 
    IntNode* getLink() const { return link; } 
    int getData() const { return data; } 
    void setData(int theData) { data = theData; } 
    void setLink(IntNode* pointer) { link = pointer; } 
    private: 
    int data; 
    IntNode *link; 
    }; 




void headInsert(IntNodePtr& head, int theData) 
{ 
    head = new IntNode(theData, head); 
} 
+0

分配的右側首先被評估。對C++中的評估順序有嚴格的規定。 – Jason

回答

1

雙方轉讓的的評價 -

head 

new IntNode(theData, head) 

完全不下令,但在此之前進行分配,雙方一直完全評估。 由於任何一方都不修改head的值,因此無論評估順序如何,結果都是相同的。