gpt4 book ai didi

c++ - 我是否在此算法中正确地重新安排了我的 LinkedList 节点?

转载 作者:行者123 更新时间:2023-11-28 07:00:51 25 4
gpt4 key购买 nike

请注意这是一项作业。我不需要这个问题的直接答案,但我想知道我在哪里搞砸了。我相信我遇到了一个无限循环,或者我在某个时刻丢失了一个链接。

我的任务是获取一个列表,删除重复项(如果它们不是第一个重复项),然后创建列表的镜像。如果只有一个重复数据,则使用该节点并移动它而不是删除它。如果没有重复项,则为其创建一个节点。我不允许使用外部函数来执行此操作。这意味着大量的指针操作。

我的思考过程是,我将有一个 anchor 并循环查找是否有任何重复项。如果有,将第一个重复项移到列表末尾并删除其余重复项。这会将列表的前半部分创建为原始列表,后半部分将作为镜像。

另请注意,如果列表为空,则什么都不做。如果只有一个节点,复制一个即可。

这是我编写的代码,但它似乎有问题。当我尝试构建它时,它一直告诉我该 exe 已停止工作。

编辑 #2 修改代码,将很快更新。

谁能帮忙指出我的错误在哪里?我一直在绞尽脑汁。

更新看起来我在处理将最后一个节点链接到 nullptr 时遇到了问题。我已经更新了代码,现在我的问题似乎是我没有处理所有节点。我假设我不处理最后一个?我会继续努力并检查是否有人指出了我的错误。

最佳答案

由于 end 指向列表中的最后一个节点,while(anchor != end) 导致循环在复制最后一个节点之前结束。您必须更改循环的退出条件或将 end 视为特例并在循环后复制它。

您可能还想考虑如果列表中的最后一个节点与之前的节点重复并因此被删除会发生什么情况。

关于c++ - 我是否在此算法中正确地重新安排了我的 LinkedList 节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22513298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com