从单个链接列表中获取第10个项目的最有效方法

本文关键字:项目 有效 方法 10个 链接 单个 列表 获取 | 更新日期: 2023-09-27 18:27:09

从列表末尾获取第10个项目的最有效方法是什么

我在想:

List[List.Count() - 10];

从单个链接列表中获取第10个项目的最有效方法

如果您使用的是System.Collections.Generic中的List<T>,那么您实际上并不是在使用单链表。它由一个数组支持,您可以简单地通过索引访问它,正如您已经建议的那样:

list[list.Count - 10];

它将是O(1)运算。在执行之前,您可能应该检查列表是否至少有10个元素,这样就不会出现异常。

但是,如果您有自己的单链表结构,则必须迭代整个列表,才能从列表末尾获得第N个项目。您可以使用相同的方法,但这将强制在集合上进行两次往返——第一次获取元素的总数,第二次获取最后一个元素的第N个。

如果您存储了您看到的最后一个N项目,例如在队列中,则只需一次迭代即可实现。这将是O(n)操作。