链接列表删除节点不起作用

时间:2017-06-13 12:58:35

标签: c#

Method查找我要删除的下一个节点的上一个节点。然后我尝试将前一个节点与我想要删除的节点的下一个节点连接起来,但是我得到的结果是一个只包含第一个元素的链表,而其他节点则被删除。

public void DeleteNode(Studentas stud )
{
    for (Mazgas d = head; d != null; d = d.Next)  
    { 
        if ( d.Next == null)  
        {
            break;
        }
        else if (d.Next.Duom.Name == stud.Name) 
        {
            Mazgas v = d;  
            v.Next = d.Next.Next;
            d.Next = null;
            break;
        }      
    }
}

2 个答案:

答案 0 :(得分:0)

没有编译它但应该工作:

public void DeleteNode(Studentas stud )
{
    for (Mazgas d = head; d != null; d = d.Next)  
    { 
        if ( d.Next == null)  
        {
            break;
        }
        else if (d.Next.Duom.Name == stud.Name) 
        {
            d.Next  = d.Next.Next;
            break;
        }      
    }
}

答案 1 :(得分:0)

澄清:您希望根据该对象的属性删除链接列表中的对象。三个案例:

  1. 删除列表的头部:剩余部分是有效的链接列表。
  2. 删除中间的元素E:将前任连接到元素E的后继者.Manfred Radlwimmer的答案应该适用于那种情况。
  3. 删除最后一个元素E:predecessor.E的下一个应该为空。
  4. 如果您通过头部访问链接列表,则删除头部将删除整个列表。在这种情况下,你应该让头部的继任者成为新的头脑。