题目:给定链表的头指针和一个结点指针,在O(1)时间删除该结点。
具体思路:把头结点的数据直接copy到要删除的结点处,然后头指针向后移动一个结点,再free掉原来的头指针指向的结点,这样等于把要删除的结点删除了。当链表只有一个结点或者要删除的结点是头结点或尾结点时,这种方法也是成立的,所以不需要做特殊的处理。假设链表总共有n个结点,我们的算法在n-1总情况下时间复杂度是O(1),只有当给定的结点处于链表末尾的时候,时间复杂度为O(n)。那么平均时间复杂度[(n-1)*O(1)+O(n)]/n,仍然为O(1),所以满足条件。
具体代码省略……
给定链表的头指针和一个结点指针,在O(1)时间删除该结点
时间: 2024-10-06 02:51:00