题目: 给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。
问题:单链表中是否一定存在删除的这个结点?
思路:把下一结点的内容复制到需要删除的结点,删除下一结点,相当于删除当前结点。 当我们想删除一个结点时,并不一定要删除这个结点本身。可以先把下一个结点的内容复制出来覆盖被删除结点的内容,然后把下一个结点删除。
假定待删除结点在链表中。
平均复杂度为[(n-1)*O(1)+O(n)]/n,结果还是O(1),符合面试官的要求。
题目: 给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。
问题:单链表中是否一定存在删除的这个结点?
思路:把下一结点的内容复制到需要删除的结点,删除下一结点,相当于删除当前结点。 当我们想删除一个结点时,并不一定要删除这个结点本身。可以先把下一个结点的内容复制出来覆盖被删除结点的内容,然后把下一个结点删除。
假定待删除结点在链表中。
平均复杂度为[(n-1)*O(1)+O(n)]/n,结果还是O(1),符合面试官的要求。
本文标题:在O(1)时间删除单链表结点
本文链接:https://www.haomeiwen.com/subject/svlyjxtx.html
网友评论