簡體   English   中英

C#LinkedList <>按索引刪除

[英]C# LinkedList<> remove by index

給定一個:

LinkedList<int> myList;

如何刪除index n的元素? 我似乎找不到任何方法,只能按值刪除方法,這不好,因為此特定列表可以有重復的值。

例如:

myList.removeAt(n);

如果要添加或刪除現有引用的節點,則鏈接列表在速度方面具有很大的優勢,但是當您沒有引用時,最好的辦法是將列表移至索引,抓住該節點,然后刪除它。

這是執行該過程的擴展方法。 它返回對已刪除節點的引用,以防您稍后希望將其插入到其他列表中或在列表中移動它的位置。

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();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM