2014-02-09 72 views
1

我正在學習C並習慣指針。我想知道一個簡單的鏈表結構,這是刪除列表的正確方法嗎?我被告知你必須手動處理所有事情(我更像是一個Java人,但試圖轉換)。對此有什麼建議或建設性的批評?提前致謝。這是刪除C中鏈接列表的正確方法嗎?

/* assume a struct with: int data; node *next; 
* and a global variable node *root; */ 
void delete_list() { 
    if(root==NULL)return; 
    node *temp = root; 
    while(root!=NULL) { 
     temp=root; 
     root=root->next; 
     free(temp); 
    } 
} 
+4

你有什麼看起來不錯。你不需要在循環之外初始的'temp = root',因爲你在再次分配之前沒有檢查'temp',但是當然這不會破壞任何東西。 – mah

回答

2

是的,你的代碼沒問題。你可能想要delete_list將一個指向根元素的指針作爲一個變量,你可以寫得更簡潔一些,

void 
delete_list (node *list) 
{ 
    while (list) 
    { 
     node *tmp = list->next; 
     free (list); 
     list = tmp; 
    } 
} 
+0

非常感謝。是的,我更喜歡你的代碼。謝謝! –