链接列表 - 对象引用未设置为对象实例

Linked List - Object reference not set to instance of object

我正在编写一个将新节点添加到链表后面的方法:

public void add(string title, string director, int year, double cost)
    {
        Node newNode = new Node();
        newNode.disc = new BluRayDisc(title, director, year, cost);

        Node holder = new Node();
        holder = first;
        while (holder.next != null)    //object reference error
        {
            holder = holder.next;
        }
        holder.next = newNode;
    }

但我收到“System.NullReferenceException: 'Object reference not set to an instance of an object.'”错误。

'first' 节点初始化为空,所以我假设这就是我的问题所在。 这是我的第一个链表,它完全遵循我得到的 addToBack 方法的示例。有没有人对这个问题有所了解?

如您所述,问题在于变量“first”被初始化为空。它应该设置为您正在构建的链表的第一个节点。

几个问题:

  • first可以是null,当你从一个空链表开始时就是这种情况,在那种情况下first.next是一个无效引用。

  • 关于:Node holder = new Node();。没有必要在此处使用 new Node() 创建一个新节点,因为在下一个语句中,您将通过执行 holder = first;

    来丢弃该节点

更正如下:

public void add(string title, string director, int year, double cost)
{
    Node newNode = new Node();
    newNode.disc = new BluRayDisc(title, director, year, cost);

    if (first == null) {
        first = newNode;
        return;
    }
    holder = first;
    while (holder.next != null)    //object reference error
    {
        holder = holder.next;
    }
    holder.next = newNode;
}