通过将链接列表的最后一个节点传递给void来删除它?

时间:2014-10-17 11:41:06

标签: c nodes

当列表用作void中的参数时,此代码将删除链表的头部。

void removeNode(node** head) {
    (*head) = NULL;
}

如何更改此代码以将用作参数的列表的最后一项设置为NULL?

注意:我从main void调用此方法,并且我希望用作'head'参数的列表将NULL作为其最后一个节点。

1 个答案:

答案 0 :(得分:1)

void removeLastNode(node ** head)
{
    if(!head || !(*head) || !(*head->next))
        return;
    node * tmp = *head;
    node * new_last;
    // Reach the last node
    for(;tmp->next;)
    {
        new_last = tmp;
        tmp = tmp->next;
    }
    freeNode(tmp);
    tmp = NULL;
    new_last->next = NULL;
}