在O(1)时间删除单链表结点

题目: 给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。

问题:单链表中是否一定存在删除的这个结点?

思路:把下一结点的内容复制到需要删除的结点,删除下一结点,相当于删除当前结点。   当我们想删除一个结点时,并不一定要删除这个结点本身。可以先把下一个结点的内容复制出来覆盖被删除结点的内容,然后把下一个结点删除。

假定待删除结点在链表中。

平均复杂度为[(n-1)*O(1)+O(n)]/n,结果还是O(1),符合面试官的要求。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容