gpt4 book ai didi

java - Java删除重复的链表

转载 作者:行者123 更新时间:2023-12-02 04:16:14 25 4
gpt4 key购买 nike

我正在尝试实现一种从链接列表中删除所有重复项的方法。我已经设法照顾好尾部了。换句话说,如果尾部的数据重复,程序就不会抛出异常错误。现在,我正在尝试处理头部,以便如果 head 的数据重复,我想设置 head = head. next 以便重复项不再出现在链表中。但是我的方法deleteDuplicates 不处理head。有人有解决这个问题的建议吗?

class Node {
private Node next = null;
private int data;

public Node(int d) {
data = d;
}

void appendToTail(int d) {
Node end = new Node(d);
Node n = this;

while(n.next != null) {
n = n.next;
}
n.next = end;
}

void print() {
Node n = this;
while(n != null) {
System.out.println(n.data);
n = n.next;
}
}

Node deleteDuplicates(Node head, int d) {
Node n = head;
if(n.data == d) {
head = head.next;
n = n.next;
}
while(n != null) {
if(n.next.data == d) {
if(n.next == null && n.next.data == d) {
return head;
}
n.next = n.next.next;
}
n = n.next;
}
return head;
}

public static void main(String [] args) {
Node x = new Node(9);
x.appendToTail(5);
x.appendToTail(9);
x.appendToTail(6);
x.appendToTail(9);
x.appendToTail(7);
x.appendToTail(9);
x.appendToTail(8);
x.appendToTail(9);
x.deleteDuplicates(x, 9);
x.print();
}
}

最佳答案

代码中的问题是删除后您没有重新分配头部。如果你修改如下,我想你的头删除问题就可以解决了。

x = x.deleteDuplicates(x, 9);

不用说,还有其他有效的方法,例如散列,可以用来降低代码的时间复杂度。

关于java - Java删除重复的链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33284399/

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