Java 链表操作: 获取倒数第 k 个节点和构建链表
Java 链表操作: 获取倒数第 k 个节点和构建链表
本文将介绍如何在 Java 中使用链表实现获取倒数第 k 个节点以及构建链表的功能。
1. 获取倒数第 k 个节点
package CountDownListNode;
public class CountDown {
public class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
public ListNode getKthFromEnd(ListNode head, int k) {
ListNode front = head, behind = head;
while (front != null && k > 0) {
front = front.next;
k--;
}
while (front != null) {
front = front.next;
behind = behind.next;
}
return behind;
}
// 新增构建链表方法
public ListNode buildLinkedList(int[] nums) {
ListNode dummy = new ListNode(0);
ListNode curr = dummy;
for (int num : nums) {
ListNode newNode = new ListNode(num);
curr.next = newNode;
curr = curr.next;
}
return dummy.next;
}
}
代码解释
-
getKthFromEnd(ListNode head, int k)方法- 使用两个指针
front和behind,front指针先向前移动k步。 - 然后
front和behind指针同时向前移动,直到front指针到达链表末尾。 - 此时
behind指针指向倒数第k个节点。
- 使用两个指针
-
buildLinkedList(int[] nums)方法- 使用一个哑节点
dummy,方便在链表头部插入第一个节点。 - 使用
curr指针指向当前节点,遍历nums数组,创建新的节点并插入到链表中。 - 最后返回
dummy的下一个节点,即链表的第一个节点。
- 使用一个哑节点
使用示例
CountDown countDown = new CountDown();
int[] nums = {1, 2, 3, 4, 5};
ListNode head = countDown.buildLinkedList(nums);
ListNode kthNode = countDown.getKthFromEnd(head, 2);
System.out.println(kthNode.val); // 输出: 4
通过以上代码,我们可以轻松地构建链表并获取链表中倒数第 k 个节点。
希望本文能帮助您更好地理解 Java 链表操作。
原文地址: http://www.cveoy.top/t/topic/pYk3 著作权归作者所有。请勿转载和采集!