📅  最后修改于: 2023-12-03 15:07:16.416000             🧑  作者: Mango
本程序旨在实现删除链表中每个第 K 个节点的功能,具体实现方法如下:
遍历链表,找到第 K 个节点的前一个节点
删除第 K 个节点
重复以上步骤直到链表末尾
public ListNode removeEveryKthNode(ListNode head, int k) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode prev = dummy;
int count = 0;
while (prev.next != null) {
count++;
if (count % k == 0) {
prev.next = prev.next.next;
} else {
prev = prev.next;
}
}
return dummy.next;
}
其中,ListNode 为链表节点的实现类,具体实现如下:
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
使用该程序可用以下代码:
ListNode head = new ListNode(1);
head.next = new ListNode(2);
head.next.next = new ListNode(3);
head.next.next.next = new ListNode(4);
head.next.next.next.next = new ListNode(5);
int k = 2;
ListNode result = removeEveryKthNode(head, k);
其中,head 为链表头节点,k 为每个要删除的节点的位置。最终的结果将保存在 result 变量中。
本程序中,k 不能为 0 或负数,否则会导致程序出现异常。同时,如果链表为空,也会出现异常。因此,在使用本程序时,请确保传入的参数符合要求。