在被访问节点被删除时查找自上次的第N个节点

时间:2011-09-24 16:29:24

标签: linked-list

所以问题是:在链表if nodes a disappearing once read中找到第k个节点frm。这应该只在一个通道中完成。

尽量避免额外的记忆。

我知道这个问题的简单解决方案,其中两个指针(P和Q让我们说)到标题节点,并且它们的P增加N次,然后两个指针递增。指针Q指向第N个元素。

但问题在这里有些不同。一旦读取节点就会消失,所以无法使用两种指针方式。

请在阅读之前不要关闭这个问题。因为这个问题不同。

由于

2 个答案:

答案 0 :(得分:6)

继续在某处存储K个元素,例如,如果K为6,则在遍历链表时在某处存储6个最新读取节点,并在读取下一个节点时,存储该元素并从已存储的节点中删除最旧的读取​​节点。链接列表结束后,您将存储最后的K个元素(使用链接列表或数组等),最后一个Kth元素将是最早存储的元素。

这可能不是我在思考时输入的最有效的解决方案,但它应该有用。

答案 1 :(得分:1)

  1. 创建一个大小为K
  2. 的队列
  3. 按顺序阅读列表中的每个元素。
  4. 在读取每个节点时,复制节点并将其排入队列。如果队列已满,则也将队列出列。
  5. 读取列表中的最后一个节点后,将队列出列队列。这是K-to-last元素。