删除一个节点
public static void delNode(ListNode head, ListNode delete){
if (delete.next != null){
ListNode nxt = delete.next;
delete.val = nxt.val;
delete.next = nxt.next;
}else if (delete == head){
head = null;
}else {
ListNode node = head;
while (node.next != delete){
node = node.next;
}
node.next = null;
}
}
删除链表中重复的节点
public static ListNode deleteDuplication(ListNode pHead) {
ListNode preNode = null;
ListNode node = pHead;
while (node != null) {
ListNode nxt = node.next;
boolean needDelete = false;
if (nxt != null && nxt.val == node.val) {
needDelete = true;
}
if (!needDelete) {
preNode = node;
node = node.next;
} else {
int value = node.val;
ListNode toBeDel = node;
while (toBeDel != null && toBeDel.val == value) {
nxt = toBeDel.next;
toBeDel = nxt;
}
if (preNode == null) {
pHead = nxt;
} else {
preNode.next = nxt;
}
node = nxt;
}
}
return pHead;
}