我想从排序的链表{0 1 2 2 3 3 4 5}中删除重复项。
`
public Node removeDuplicates(Node header)
{
Node tempHeader = null;
if(header != null)
tempHeader = header.next;
else return header;
Node prev = header;
if((tempHeader == null)) return header ;
while(tempHeader != null)
{
if(tempHeader.data != prev.data)
{
prev.setNext(tempHeader);
}
tempHeader = tempHeader.next;
}
prev = header;
printList(prev);
return tempHeader;
}
`
prev.setNext(tempHeader)在while循环内无法正常工作。理想情况下,当prev = 2且tempHeader =
3时,prev.next应该是data = 3的节点。
Printlist函数仅使用标题指针并打印列表。
节点定义如下。
public class Node
{
int data;
Node next;
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
}
循环已排序,因此您知道重复项将彼此相邻。如果要在适当位置编辑列表,则必须有两个列表指针(您要执行此操作)。您将其称为tempHeader和prev,然后就必须在列表中同时推进它们(我在代码中没有看到)。否则,如果您不随便前进prev指针,那么您总是将tempHeader下的元素与列表中的第一项进行比较,这是不正确的。
但是,一种更简单的方法是随您建立一个新列表。只需记住您添加到列表中的最后一项的值即可。然后,如果您要插入的内容相同,则只需不插入即可,完成后,只需返回新列表即可。
问题内容: 数据库类型为PostGres 8.3。 如果我写了: 我有一些计数超过1的行。如何取出重复的行(我仍然希望每个行都保留1行,而不是+1行…我不想删除所有行。) 例子: 应该变成: 我找到的唯一答案是 在那里,但是我想知道是否可以在没有哈希列的情况下做到这一点。 警告 我没有具有唯一编号的PK,因此无法使用min(…)技术。PK是3个字段。 问题答案: 这是所有表都应具有主键的众多原因之
结果:[1,2,3,3,3,4,4][1,2,3,3,3,4,4]
其中DataCord是一个类 并且调谐器应该是唯一的
问题内容: 我想从列表中删除重复项,但我无法正常工作: 问题答案: 如果该代码不起作用,则可能是你未在该类上正确实现。 大概有一些钥匙(我们称之为)可以唯一地标识一个客户。例如 的适当定义equals(Object)如下所示: 为了完整起见,你还应该实现hashCode两个Customer相等的对象将返回相同的哈希值。hashCode上述定义的匹配项为equals: 还值得注意的是,如果列表很大,
我需要返回带有删除的所有重复元素的链表的头部。我理解这个问题的逻辑,但我在使用递归时变得困惑。 如果我在If条件之前调用函数RemoveDuplicates(head.next);很好用。但是,如果我交换语句的顺序(rest所有内容都完全相同),如下所示: 代码无法正确解决像'1->1->1->1'这样的测试用例。在后一种情况下,我得到的输出是'1->1'。 我真的想要一些关于我如何更好地理解递归
我试图从排序的单链表中删除重复的值。 这是我的密码 SinglelyLinkedListNode*移除的副本(SinglelyLinkedListNode*头){ } 然而,当单向链表为3-时,代码失败