Java 单向链表去重复节点
一个印象深刻的问题:Java单向链表去掉重复节点,记录一下
首先明确链表存储的节点:
private class Node{
private int val;
private Node next;
public Node(int i, Node head){
this.val = i;
this.next = head;
}
public Node(int i){
this(i,null);
}
}
要去重的是数据和结构为这样的一个链表:1-2-2-3-3-3-4-null
Node test(Node head) {
// 声明一个临时对象用来存储当前节点的下一个节点
Node temp;
// 如果当前节点不为 null
while( head != null) {
// 将当前节点的下一个节点赋值给 temp
temp = head.next;
// 如果 temp 不为null 且 当前节点的val和下个节点的val相等,则进行去重操作
if (temp != null && head.val == temp.val) {
// 直接干掉当前节点的下一个节点,将下一个节点的指针指向下下个节点
head.next = temp.next;
}else {
// 如果 temp 为null 或 val不相等,则将当前节点的指针指向下一个节点
head = temp;
}
}
}
总结:判断节点是否为空,如果不为空判断下一个节点是否为空,如果两个节点都不为空,则判断两个节点的val值是否相等,如果val值相等,则 “ 自己干掉自己 ” ,将指针指向下下个节点,这样就达到去重的目的了。

浙公网安备 33010602011771号