美文网首页经典面试题
经典面试题18 - 在O(1)时间删除链表节点

经典面试题18 - 在O(1)时间删除链表节点

作者: 豆志昂扬 | 来源:发表于2017-04-09 17:53 被阅读101次

    问题:
    给定链表的头指针和一个节点指针,在O(1)时间删除该节点。

    解答:
    主要思想是「狸猫换太子」,用下一个节点数据覆盖要删除的节点,然后删除下一个节点。

    代码如下:

    //O(1)时间删除链表节点,从无头单链表中删除节点。
    void deleteRandomNode(Node *cur)
    {
        assert(cur != NULL);
        assert(cur->next != NULL);    //不能是尾节点, 尾节点行不通。
        Node* pNext = cur->next;
        cur->data = pNext->data;
        cur->next = pNext->next;
        delete pNext;
    }
    

    经典面试100题 - 持续更新中

    相关文章

      网友评论

        本文标题:经典面试题18 - 在O(1)时间删除链表节点

        本文链接:https://www.haomeiwen.com/subject/dgndattx.html