2017-06-22 103 views
0

我正在爲項目製作一些鏈接列表。我已經編碼的列表從鏈接列表更新數據

t_team *add_team(t_team *teams, char *team_name, int id) 
{ 
    t_team *tmp; 

    if ((tmp = malloc(sizeof(t_team))) == NULL) 
    return (NULL); 

    if ((tmp->name = malloc(sizeof(char) * strlen(team_name) + 1)) == NULL) 
    return (NULL); 

    strcpy(tmp->name, team_name); 
    tmp->id = id; 
    tmp->next = teams; 
    return (tmp); 
} 

附加但我需要更新的列表中一個特定節點的ID,我該怎麼辦呢? 感謝

+3

更新您的發佈包含[mcve] –

+0

搜索要更新的節點。更新它。不是很難。除了你還沒有寫搜索功能外,還有什麼問題? –

回答

2

第1步:找到您要更新的列表

t_team *find_by_name(t_team *head, char *team_name) 
{ 
    t_team * tmp = head; 
    while(tmp != NULL){ 
    if(strcmp(tmp->name, team_name) != 0) 
     head = tmp->next; //Advance the pointer to next element 
    else 
     return tmp; 
    } 
    return NULL; 
} 

步驟2:從您的主要功能更新申請
調用此實用程序: -

t_team *tmp = find_by_name(head, "Some_Name"); 
    if(tmp == NULL) 
    //element not found 
    else 
    tmp->id = new_id; //Update ID 

更新: - 更新find_by_name使用tmp代替修改頭

+0

看上面....... –

+0

你正在改變主意!那是不正確的!... –

+0

我更新了使用tmp - 該片段是給OP一個想法需要做什麼 – Zakir