Java 链表反转:获取倒数第k个节点的示例代码
public class CountDown { public class ListNode { int val; ListNode next; public ListNode(int x) { x = val; } } public ListNode reverseList(ListNode head , int k) { ListNode front = head , behind = head; //定义快慢指针,此时都指向头节点 while(front !=null && k > 0) { //判断链表不为空,并且k的值得为正数 front = front.next; //只要链表不为空并且k>0,front就一直往下走 k--; //front走一步k-1 } while(front != null) { front = front.next; behind = behind.next; } return behind; } public ListNode buildLinkedList(int[]arr) { ListNode dummy = new ListNode(0); //创建一个虚拟头结点,值为0,作为链表的起始点。 ListNode curr = dummy; //创建一个指针curr,指向当前节点,初始时指向虚拟头结点。 for (int nums:arr) { curr.next = new ListNode(nums); curr = curr.next; } return dummy.next; } } public class CountDownTest { public static void main(String[] args) { CountDown countDown = new CountDown(); int[] arr = {1, 2, 3, 4, 5}; ListNode head = countDown.buildLinkedList(arr); // 创建链表 int k = 3; ListNode result = countDown.reverseList(head, k); // 获取倒数第k个节点 System.out.println(result.val); // 打印倒数第k个节点的值 } } // 输出结果为2,因为链表的倒数第3个节点的值为2
原文地址: https://www.cveoy.top/t/topic/pYyP 著作权归作者所有。请勿转载和采集!