LinkedList 类中的 swapList() 和 operator=() 函数在 C++ 中不断崩溃

swapList() and operator=() functions in a LinkedList class keep crashing in C++

提问人:Ed2Cute 提问时间:9/14/2021 最后编辑:Ed2Cute 更新时间:9/14/2021 访问量:99

问:

我需要一个swapList(LinkedList&Other)函数来负责基本上交换两个列表的值。目前,它采用 Other 的最后一个元素并将其输入到 *this 的第一个元素中。然后,它还将 Other 的最后一个元素移动到其列表的前面。这是我目前所拥有的:

      Node *nodePtr = Other.head;
      Node *temp = this->head;
      while(nodePtr){
        temp->value = nodePtr->value;
        nodePtr->value = Other.head->value;
        Other.head->value = temp->value;
        nodePtr = nodePtr->next;
      }
    }

现在,我知道了复制交换习语,我相信这意味着我可以在 operator=() 重载中调用交换函数。我似乎无法弄清楚交换。我已经玩过很多次了,这既不是我第一次,也不是我的最后一次迭代。任何帮助都非常感谢。搜索只会在单个列表中产生交换节点。

C++ 单链接列表 复制和交换

评论


答:

0赞 Dúthomhas 9/14/2021 #1

每当使用链表(或其他链接结构)时,最好拿出一些纸和铅笔来出你的列表,用框表示值,用箭头表示指针,然后使用橡皮擦和新箭头在纸上执行交换。

您必须这样做,以便在不首先向目标框/值添加新箭头的情况下永远不会擦除箭头。

特别注意被交换的物品彼此相邻的可能性!

一旦你弄清楚了这一点,你就需要编写你的代码,以相同的顺序做同样的事情。