2017-06-22 105 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