JAVA中使用链表删除重复元素的源码
时间: 2024-09-23 13:05:31 浏览: 34
在Java中,我们可以使用HashSet数据结构配合循环来删除链表中的重复元素。这里提供一个简单的示例,假设我们有一个Node类表示链表节点:
```java
import java.util.HashSet;
class Node {
int val;
Node next;
//构造函数和 getters setters省略
}
public class RemoveDuplicatesFromLinkedList {
public static Node removeDuplicates(Node head) {
if (head == null || head.next == null) {
return head;
}
HashSet<Integer> set = new HashSet<>();
Node current = head;
while (current != null) {
if (!set.contains(current.val)) {
set.add(current.val);
current.next = removeDuplicates(current.next); // 递归处理下一个节点
} else {
current = current.next; // 如果遇到重复值,则跳过当前节点
}
}
return head;
}
// 添加链表创建、插入等辅助方法省略
public static void main(String[] args) {
// 创建链表并添加一些元素
// ...
// 调用removeDuplicates方法
Node result = removeDuplicates(head);
// 打印结果
// ...
}
}
```
在这个例子中,我们遍历链表,将每个节点的值添加到HashSet中。如果遇到重复值,我们就直接跳过它。如果值不在HashSet中,就将其加入并继续处理下一个节点。这样,最后返回的链表就不包含重复元素了。
阅读全文