Java删除链表中倒数第K个节点
/**
* 删除链表中倒数第k个节点
* @param k 倒数第k个节点
* @param head 链表的头结点
* @return 新的头结点
*/
public static Node removeLastKthNode(int k, Node head){
if (head == null || k < 1){
return head;
}
//声明int num用于表示链表的长度
int num = 0;
Node temp = head;
while (temp != null){
num++;
temp = temp.next;
}
//第一种情况:不存在倒数第k个节点,即k可能超过链表的长度
if (k > num){
return head;
}
//第二种情况:k可能是头结点
else if (num == k){
return head.next;
}
//第三种情况:k可能是在第一个节点之后
else {
temp = head;
//等效为删除(num - k + 1)个节点
while (num - k != 1){
temp = temp.next;
num--;
}
temp.next = temp.next.next;
}
return head;
}