【发布时间】:2012-03-14 01:29:32
【问题描述】:
我有一个包含 x 个节点的单链表,其中一些节点是重复的。我需要在遍历列表时删除重复项,所以我最终得到一个只包含唯一节点的新列表。但是,我还需要计算所有重复项的平均值,以便唯一列表将包含这些平均值。
示例 1: 假设我有一个这样的列表: a[1] -> b[2] -> c[3] -> a[2] -> a[3] -> b[2] -> null
遍历列表后,我应该得到这个列表: a[2] -> b[2] -> c[3] -> 空
示例 2: 假设我有一个这样的列表: a[2] -> a[2] -> a[5] -> b[2] -> b[4] -> c[3] -> null
遍历列表后,我应该得到这个列表: a[3] -> b[3] -> c[3] -> null
我想我需要一种方法来删除重复节点,因为我正在遍历列表,但我不知道如何。有人可以指导我如何实现这一目标吗?一些伪代码会很棒。谢谢。
编辑:解决了我的问题。详情见答案...
【问题讨论】:
-
您说要删除重复项,但您发布的示例有所不同。
-
就像 Jakub 说的,我不明白为什么 a[1] 是重复的 a[2] 如果他们有不同的密钥。我错过了什么?
-
StackOverflow 不会为你做作业。关于从链表中删除节点有大量问题可供参考。遍历一个列表找到一个平均值也比较简单。有很多方法可以解决这个问题,但你的分配可能还有一些你没有列出的约束,比如有多少唯一符号,以及是否允许你将它复制到中间数据结构。写一些代码,问一个更具体的问题。
-
@KarlBielefeldt:这不是家庭作业,否则我会这样标记它。我没有要求任何代码,只是一些想法/伪代码如何解决我的问题。
-
Jakub & lucholes:对不起,如果我的问题不清楚。该节点有两个字段,即a [1]:id = a,value = 1。所以我想找到所有具有相同id的节点并平均它们的值。最后,我应该得到一个仅包含唯一 id 节点及其平均值的列表。
标签: c linked-list