繁体   English   中英

一次删除单个链接列表中的第k个元素

[英]Remove kth last element from a Singly Linked List in a single pass

我正在练习Python,却想不出任何解决此问题的方法。 问题是仅在一个遍历和恒定的空间内从单个链接列表中删除第k个最后一个元素。 我只能想到需要2次通过的解决方案。 另外,在问题中,没有提到列表的大小,因此我假设该大小是已知的。 请问有人可以单次通过此方法吗?

进行操作时,将临时对象的指针/位置缓存在要删除的临时对象之前。

因此,将有一个循环,直到最后。 将有一条语句在temp中缓存第(ik-1)个元素。

当此循环结束时,temp将具有要删除的项目的位置。

希望这可以帮助。

如果知道大小s - kth删除s - kth元素。

如果不是这种情况,那么我将使用两个跑步者,一个是比第二个领先k个索引。 当第一个跑步者到达列表的末尾时,第二个跑步者正好指向第k个最后一个元素。

来自GeeksforGeeks

方法2(使用两个指针)

维护两个指针–参考指针和主指针。 初始化引用和主指向head的指针。 首先将参考指针从头移到n个节点。 现在将两个指针一一移动,直到参考指针到达终点。 现在主指针将从末尾指向第n个节点。 返回主指针。

可用python实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM