public class ListNode {
public int value;
public ListNode next;
public ListNode(int value, ListNode next) {
this.value = value;
this.next = next;
}
}
public class LinkedListUtil {
ListNode reverse(ListNode head) {
ListNode pre = null;
ListNode headNext;
while (head != null) {
headNext = head.next;
head.next = pre;
pre = head;
head = headNext;
}
return pre;
}
ListNode deleteRepeat(ListNode head) {
ListNode headNode = new ListNode(0, head);
ListNode pre = headNode;
ListNode end;
while (head != null && head.next != null) {
if (head.value != head.next.value) {
pre = head;
head = head.next;
} else {
end = head.next.next;
while (end != null && end.value == head.value) {
end = end.next;
}
pre.next = end;
head = end;
}
}
return headNode.next;
}
ListNode deleteRepeatKeepOne(ListNode head) {
ListNode listHead = head;
ListNode end;
while (head != null && head.next != null) {
if (head.value != head.next.value) {
head = head.next;
} else {
end = head.next.next;
while (end != null && end.value == head.value) {
end = end.next;
}
head.next = end;
head = end;
}
}
return listHead;
}
}