Как написать функцию для удаления узла в односвязном линейном списке?

Смог написать 3 функции для удаления узлов в списке:

void remove_node(node *headd) {
    if (headd->next == NULL) {
        free(headd);
    }
    node * current = headd;
    while (current->next->next != NULL)
    {
        current = current->next;
    }
    current->next = NULL;
    free(current->next);
    current->next = NULL;
}
node * deletelem(node *lst, node *root)
{
    node *temp;
    temp = root;
    while (temp->next != lst) 
    { 
        temp = temp->next;
    }
    temp->next = lst->next; 
    free(lst); 
    return(temp);
}
struct list * deletehead(node *root)
{
    struct list *temp;
    temp = root->next;
    free(root);
    return(temp); 
}

Как мне на их основе написать функцию для удаления узла по индексу?.


Ответы (0 шт):