2013-10-05 124 views
2

鏈表有的請解釋插入節點在C

new_node->next = (*head_ref); 
(*head_ref) = new_node; 

這在下面的代碼

/* Utility function to insert a node at the beginning */ 
void push(struct node **head_ref, int new_data) 
{ 
    struct node *new_node = (struct node *) malloc(sizeof(struct node)); 
    new_node->data = new_data; 
    new_node->next = (*head_ref); 
    (*head_ref) = new_node; 
} 
+1

,頭指針是在每個「推」改性,因此它需要由地址被傳遞(並因此取消了它的值,並設置它的值)。一個常見的選擇是簡單地使用函數的返回值作爲新的頭指針。 ([並且不投射malloc](http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc/605858#605858))。 – WhozCraig

+0

閱讀有關按值傳遞參數與按參考傳遞參數之間的區別。 –

+0

可能的重複:http://stackoverflow.com/questions/19194224/adding-node-to-the-front-of-a-linked-list/19194319#19194319 – Sadique

回答

0

這是一個簡單的節點如何被添加到C中鏈接列表的開始。代碼只保存對頭部的引用,並且當添加新節點時,它被添加到開始並且新插入的節點是被認爲是新的頭。

在您的代碼中,第一行在開始處添加新節點。這是通過將當前列表(由標題指向)附加到新節點。

第二行將新節點標記爲列表頭。

請採取以下連結一看的全面圖案說明於上述邏輯

http://www.thelearningpoint.net/computer-science/data-structures-singly-linked-list-with-c-program-source-code

0

評論說,究竟是什麼。 在開始處插入新節點,並更新head_ref以指向新開始。