从LinkedList中删除节点(C#)

时间:2015-06-10 18:00:17

标签: c# data-structures linked-list hashtable

我创建了一个带有函数LinkedList的{​​{1}}类,如果找到,则从列表中删除某个节点,但它不起作用:

delete

我认为我需要做的就是找到节点并将其设置为下一个节点(因此节点被“删除”在链表之外),但事实并非如此。如果有人能帮助我,我会非常感激!

编辑:忘记提及我有一个链表。

EDIT2:我的新代码:

public class LinkedList
{
    public Node head;
    <...>
    public void delete(string n)
    {
        Node x = search(n); //returns the node to delete or null if not found
        if (x != null)
            x = x.next;
    }
    <...>
}

1 个答案:

答案 0 :(得分:3)

您需要遍历列表,直到下一个节点是您要删除的节点。然后将当前设置为下一个节点的下一个节点。

public void Delete(string value)
{
    if (head == null) return;

    if (head.Value == value)
    {
        head = head.Next;
        return;
    }

    var n = head;
    while (n.Next != null)
    {
        if (n.Next.Value == value)
        {
            n.Next = n.Next.Next;
            return;
        }

        n = n.Next;
    }
}

这当然假设你只想删除第一场比赛。