数据结构——从LinkedList中移除一个节点(c#)



我创建了一个LinkedList类,函数delete从列表中删除某个节点,如果发现,但是它不起作用:

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;
    }
    <...>
}

我认为我所需要做的就是找到节点并将其设置为下一个节点(因此节点从链表中"删除"),但事实并非如此。如果有人能帮我,我将不胜感激!

编辑:忘了说我有一个单独的链表。

编辑2:My new code:

    public void delete(string n)
    {
        Node x = head;
        while (x != null && x.name != n)
        {
            if (x.next.name == n)
                x.next = x.next.next;
            x = x.next;
        }
        if (x != null)
            x = null;
    }

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

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

当然,这假设您只想删除第一个匹配项。

相关内容

  • 没有找到相关文章

最新更新