鉴于:
LinkedList<int> myList;
如何删除index n
处的元素?我似乎无法找到任何方法,只能通过值删除这些方法,因为此特定列表可能具有重复值。
EG:
myList.removeAt(n);
答案 0 :(得分:0)
如果要添加或删除已有引用的节点,链接列表在速度方面具有很大的优势,但是当您没有引用时,您可以做的最好的事情是将列表转到索引,抓住节点,然后删除它。
这是执行该过程的扩展方法。如果您希望稍后将其插入到其他列表中,或者您正在移动它在列表中的位置,则会返回对已删除节点的引用。
public static class ExtensionMethods
{
public static LinkedListNode<T> RemoveAt<T>(this LinkedList<T> list, int index)
{
LinkedListNode<T> currentNode = list.First;
for (int i = 0; i <= index && currentNode != null; i++)
{
if (i != index)
{
currentNode = currentNode.Next;
continue;
}
list.Remove(currentNode);
return currentNode;
}
throw new IndexOutOfRangeException();
}
}