求教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>)这个版本删除节点,