请注意,这是一个赋值。我不需要直接回答这个问题,但我想知道我在哪里搞砸了。我相信我得到了一个无限循环,或者我在某个地方丢失了一个链接。
我的任务是获取一个列表,删除重复项(如果它们不是第一个重复项),然后创建列表的镜像。如果数据只有一个副本,那么使用该节点并移动它,而不是删除它。如果没有重复项,则为其创建一个节点。我不允许使用外部函数来做这个。这意味着大量的指针操作。
我对它的思考过程是,我将有一个锚和循环,以发现是否有任何重复。如果有,将第一个副本移动到列表的末尾,并删除其余的副本。这将创建列表的前半部分作为原始列表,后半部分作为镜像。
还要注意,如果列表为空,则不执行任何操作。如果只有一个节点,复制它并完成。
这是我已经编码,但它似乎有一个问题。当我尝试构建它时,它一直告诉我exe已经停止工作。
编辑#2修改代码,将很快更新。
谁能帮我指出我的错误在哪里?我一直在为这件事绞尽脑汁。看起来我在处理使最后一个节点链接到nullptr时遇到了问题。我已经更新了代码,现在我的问题似乎是我没有处理所有节点。我猜最后一个案子不是我处理的吧?我将继续努力,并检查是否有人指出了我的错误。
由于end
指向列表中的最后一个节点,因此while(anchor != end)
在复制最后一个节点之前导致循环结束。你必须改变循环的退出条件,或者考虑end
是一个特殊的情况,并在循环后复制它。
您可能还想考虑如果列表中的最后一个节点是前一个节点的副本,因此被删除会发生什么。