2014-02-22 125 views
1
void add_end(node** head, node* new_node) 
{ 
    if(*head==NULL) 
    { 
     *head=new_node; 
     new_node->next=NULL; 
    }else 
    { 

    } 
} 

我是C和指針操作的新手。所以如果我想添加一個元素到列表的末尾,我該如何管理它?我試過node *temp=*head;來保存頭部地址而不改變它。然後while(temp) { temp=temp->next}。顯然,臨時只會得到一個淺拷貝。我怎麼能實現這個功能。謝謝。如何將元素添加到指定頭的指針列表的末尾?

+5

投資在一張紙和一支鉛筆。開始在紙上繪製鏈表的表示形式以獲得更好的理解。 –

回答

4

你應該首先遍歷原來的列表的末尾(基於最後一個的下一個是NULL)。然後簡單地將它添加到那裏。

像這樣:

new_node->next = NULL; 
if(*head == NULL)    // empty list 
{ 
    *head = new_node; 
} 
else       // not empty, traverse to end and add 
{ 
    node *current = *head; 
    while (current->next)  // <- traverse 
    { 
     current = current->next; 
    }  
    current->next = new_node; // <- add 
} 
+0

有在實現中的錯誤:當列表爲空頭不分配。目前並沒有指向它只是指向同一個地方的頭。 – eyalm

相關問題