我有解决方案。所以我不需要帮助,但我有一个问题。此代码有效:
public void Delete(ref Node n)
{
n = n.next;
}
LinkedList list = new LinkedList();
list.AddTail(4);
list.AddTail(3);
list.AddTail(2);
list.AddTail(1);
list.AddTail(0);
list.Delete(ref list.head.next.next);
但是这段代码没有:
Node n = list.head.next.next;
list.Delete(ref n);
为什么?
编辑:
public class Node
{
public int number;
public Node next;
public Node(int number, Node next)
{
this.number = number;
}
}
答案 0 :(得分:0)
致电时
list.Delete(ref list.head.next.next);
您将引用(指针)更改为字段List.next。
但如果你打电话
list.Delete(ref n);
您可以更改局部变量的引用(指针)。
只是尝试将代码内联:
list.Delete(ref list.head.next.next);
看起来像
list.head.next.next = list.head.next.next.next;
但是
Node n = list.head.next.next;
list.Delete(ref n);
看起来像
Node n = list.head.next.next;
n = n.next;