且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何从链表中删除节点?

更新时间:2023-01-17 18:15:12

您的del函数将删除临时节点(需要删除的节点之前的节点).

Your del function deletes pretemp node (node that was before the one that you need to delete).

可能的解决方法:

//n : data of element that you want to delete from list
void del(int n)
{
    //loop to find 'n'
    for (node *tmp = first; tmp->link; tmp = tmp->link)
    {
        if (n == tmp->link->data)
        {
            node *x = tmp->link;
            tmp->link = tmp->link->link;
            delete x;
            num--;
            break;
        }
    }
}

还,您的del是否应该删除所有data == n的节点?

Also, was your del supposed to delete all nodes with data == n?