方法查找我要删除的下一个节点的上一个节点。然后我尝试将上一个节点与我要删除的节点的下一个节点连接起来,但是我得到的结果是一个链表,它只有一个元素,而其他元素被删除。
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;
}
}
}
澄清一下:您希望根据链表中的对象属性删除该对象。三种情况:
- 删除列表的头部:余数是有效的链表。
- 删除介于两者之间的元素 E:将前置元素连接到元素 E 的后继元素。
- 删除最后一项内容E:前身。E 的下一个应变为空。
如果您通过 head 访问链表,则删除 head 将删除整个列表。在这种情况下,您应该使头部的继任者成为新负责人。