链表删除节点不起作用



方法查找我要删除的下一个节点的上一个节点。然后我尝试将上一个节点与我要删除的节点的下一个节点连接起来,但是我得到的结果是一个链表,它只有一个元素,而其他元素被删除。

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

没有编译它,但应该可以工作:

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. 删除列表的头部:余数是有效的链表。
  2. 删除介于两者之间的元素 E:将前置元素连接到元素 E 的后继元素。
  3. 删除最后一项内容E:前身。E 的下一个应变为空。

如果您通过 head 访问链表,则删除 head 将删除整个列表。在这种情况下,您应该使头部的继任者成为新负责人。

最新更新