我重新安排我的LinkedList节点正确在这个算法

Am I re-arranging my LinkedList nodes properly in this algorithm?

本文关键字:算法 节点 新安排 我的 LinkedList      更新时间:2023-10-16

请注意,这是一个赋值。我不需要直接回答这个问题,但我想知道我在哪里搞砸了。我相信我得到了一个无限循环,或者我在某个地方丢失了一个链接。

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

我对它的思考过程是,我将有一个锚和循环,以发现是否有任何重复。如果有,将第一个副本移动到列表的末尾,并删除其余的副本。这将创建列表的前半部分作为原始列表,后半部分作为镜像。

还要注意,如果列表为空,则不执行任何操作。如果只有一个节点,复制它并完成。

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

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

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

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

由于end指向列表中的最后一个节点,因此while(anchor != end)在复制最后一个节点之前导致循环结束。你必须改变循环的退出条件,或者考虑end是一个特殊的情况,并在循环后复制它。

您可能还想考虑如果列表中的最后一个节点是前一个节点的副本,因此被删除会发生什么。