首页 > 解决方案 > 为什么添加功能在链表中不起作用

问题描述

我很好奇以下两个功能有什么区别:

    void Add(T x)
    {
        if (head == nullptr)
        {
            head = (new Node<T>());
            head->set(x);
            head->set_next(nullptr);
            return;
        }
        Node<T> *temp = head;
        while (temp->get_next() != nullptr)
        {
            temp = temp->get_next();
        }
        temp->set_next(new Node<T>());
        (temp->get_next())->set(x);
        (temp->get_next())->set_next(nullptr);
    }
   void Add(T x)
    {
        Node<T> *temp = head;
        while (temp != nullptr)
        {
            temp = temp->get_next();
        }
        temp = new Node<T>();
        temp->set(x);
        temp->set_next(nullptr);
    }

第一个工作正常,第二个是段错误。这是为什么?我认为结果应该是一样的,只是想让代码更短一点,但我显然遗漏了一些东西

标签: c++linked-list

解决方案


推荐阅读