提问人:Ed2Cute 提问时间:9/14/2021 最后编辑:Ed2Cute 更新时间:9/14/2021 访问量:99
LinkedList 类中的 swapList() 和 operator=() 函数在 C++ 中不断崩溃
swapList() and operator=() functions in a LinkedList class keep crashing in C++
问:
我需要一个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=() 重载中调用交换函数。我似乎无法弄清楚交换。我已经玩过很多次了,这既不是我第一次,也不是我的最后一次迭代。任何帮助都非常感谢。搜索只会在单个列表中产生交换节点。
答:
0赞
Dúthomhas
9/14/2021
#1
每当使用链表(或其他链接结构)时,最好拿出一些纸和铅笔来画出你的列表,用框表示值,用箭头表示指针,然后使用橡皮擦和新箭头在纸上执行交换。
您必须这样做,以便在不首先向目标框/值添加新箭头的情况下永远不会擦除箭头。
特别注意被交换的物品彼此相邻的可能性!
一旦你弄清楚了这一点,你就需要编写你的代码,以相同的顺序做同样的事情。
上一个:什么是三法则?
评论