首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

求教LinkedList有关问题

2013-04-20 
求教LinkedList问题MSDN上说LinkedListT 提供 LinkedListNodeT 类型的单独节点,因此插入和移除的运算

求教LinkedList问题
MSDN上说


LinkedList<T> 提供 LinkedListNode<T> 类型的单独节点,因此插入和移除的运算复杂度为 O(1)。

可是我觉得它的Remove方法应该不可能达到O(1)吧,他怎么实现查询的

另外请教大家对于LinkedList<T>,我需要把某个节点调整到队首,正确的做法是什么?
我现在是下面的写法,但我觉得效率不高,100000次花上了30秒

list.Remove(obj);
list.AddFirst(obj);

[解决办法]
LinkedList有两个Remove版本,一个参数是T,这个版本的时间复杂度是O(n),而另一个版本参数是LinkedListNode<T>,这个版本的时间复杂度是O(1);

你的这两个语句,第二句的效率很高,可以不用改,主要是第一句效率低,
list.Remove(obj);
list.AddFirst(obj);

改进的方法是用Remmove(LinkedListNode<T>)这个版本删除节点,

热点排行