1

我需要一个 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=() 重载中调用交换函数。我似乎无法弄清楚交换。我玩过很多次,这既不是我的第一次,也不是我最后一次迭代该函数。任何帮助深表感谢。搜索只会在单个列表中产生交换节点。

4

1 回答 1

0

每当玩链表(或其他链表)时,拿出纸和铅笔画出你的链表,用方框表示值,用箭头表示指针,然后用橡皮擦和新的箭头来执行,这是一个非常好的主意在纸上交换。

您必须这样做,以免在未先向目标框/值添加新箭头的情况下擦除箭头。

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

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

于 2021-09-14T05:03:43.107 回答