package com.www.OfferToSword;
public class Solution13 {
public static class ListNode {
int value;
ListNode next;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ListNode head = new ListNode();
head.value = 1;
head.next = new ListNode();
head.next.value = 2;
head.next.next = new ListNode();
head.next.next.value = 3;
head.next.next.next = new ListNode();
head.next.next.next.value = 4;
ListNode middle = head.next.next.next.next = new ListNode();
head.next.next.next.next.value = 5;
head.next.next.next.next.next = new ListNode();
head.next.next.next.next.next.value = 6;
head.next.next.next.next.next.next = new ListNode();
head.next.next.next.next.next.next.value = 7;
head.next.next.next.next.next.next.next = new ListNode();
head.next.next.next.next.next.next.next.value = 8;
ListNode last = head.next.next.next.next.next.next.next.next = new ListNode();
head.next.next.next.next.next.next.next.next.value = 9;
head = deleteNode(head, null); // 删除的结点为空
printList(head);
ListNode node = new ListNode();
node.value = 12;
head = deleteNode(head, head); // 删除头结点
printList(head);
head = deleteNode(head, last); // 删除尾结点
printList(head);
head = deleteNode(head, middle); // 删除中间结点
printList(head);
head = deleteNode(head, node); // 删除的结点不在链表中
printList(head);
}
public static ListNode deleteNode(ListNode list, ListNode toBeDeleted) {
if (list == null || toBeDeleted == null) {
return list;
}
if (list == toBeDeleted) {
return list.next;
}
if (toBeDeleted.next == null) {
ListNode tmp = list;
while (tmp.next != toBeDeleted) {
tmp = tmp.next;
}
tmp.next = null;
} else {
toBeDeleted.value = toBeDeleted.next.value;
toBeDeleted.next = toBeDeleted.next.next;
}
return list;
}
public static void printList(ListNode list) {
while (list != null) {
System.out.print(list.value + "->");
list = list.next;
}
System.out.println("null");
}
}