Is there anyone that can explain the following code. I have problem with double pointers and cant understand how is code is linked.
int remove_person(Post **list, char *name)
    {
        Post *p = *list;
        if(strcmp(p->name, name) == 0)
        {
            free(*list); //rensar minnet
            *list = p->next;
            return 1;  
        }
        for(; p->next != NULL; p = p->next)
        {
            if(strcmp(p->next->name, name) == 0)
            {
                Post *tmp = p->next;
                p->next = p->next->next;
                free(tmp); //rensar minnet 
                return 1;
            }
        }
        return 0;
    }
 
     
     
     
     
    