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

时间:2014-10-19 23:07:26

标签: c#

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

我在想这样的事情:

List[List.Count() - 10];

1 个答案:

答案 0 :(得分:2)

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

list[list.Count - 10];

它将是 O(1)操作。你应该在做之前检查列表是否至少有10个元素,这样你就不会得到例外。

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

如果您存储过去见过的N件物品,只需一次迭代即可实现,例如:在队列中。这将是 O(n)操作。