C# 无法删除C中单链表的第一个节点#
我试图在C#中实现一个单链表。为了删除节点,我编写了以下代码:C# 无法删除C中单链表的第一个节点#,c#,singly-linked-list,C#,Singly Linked List,我试图在C#中实现一个单链表。为了删除节点,我编写了以下代码: public void deleteNode(int value) { Node node = this; if (node.data == value) { node = node.next; } else { while (node != null && nod
public void deleteNode(int value)
{
Node node = this;
if (node.data == value)
{
node = node.next;
}
else
{
while (node != null && node.next != null)
{
if (node.next.data == value)
{
node.next = node.next.next;
}
node = node.next;
}
}
}
我可以删除除第一个节点外的所有节点。为什么
node.next=node.next.next
更新这个实例,但是node=node.next
不更新?因为node
是一个局部变量?@MatthewWatson但是node.next=node.next.next呢?当您更改“node.next”时,您实际上是在更改节点中的一个字段。当您更改节点
时,您只是将引用的副本更改为节点。您可能打算使用this.next=node.next但是,在某个地方,您将有一个指向第一个节点的根。“这可能是你需要改变的地方。”马修沃森我明白了,我一直在使用这个实例。另外,使用this.next=node.next
而不是node=node.next
不会删除任何节点。@伏都教,这是只读的对吗<代码>此=此。下一步不起作用