剑指offer(十四)链表中倒数第k个节点

写在前面:

为了增长一下自己的数据结构能力,也为了面试准备,准备将剑指Offer做一下,并与各位分享,希望各位可以对代码以及思路提提建议,欢迎志同道合者,谢谢。

题目
输入一个链表,输出该链表中倒数第k个结点。

思路:

1-2-3-4-5-6-7

7个数据的链表,我想找到倒数第2个数据也就是6
我们先遍历这个链表查询总数据的个数,看看查询的索引是否超标,
这个链表长度为7,我们查询倒数第2个数据,也就是正数第六个,索引是5

输出这个数据
代码实现

package com.itzmn.offer;

import java.util.List;

/**
 * @Auther: 张梦楠
 * @Date: 2018/7/30 10:11
 * :https://www.jianshu.com/u/d611be10d1a6
 * 码云:https://gitee.com/zhangqiye
 * @Description:
 */
public class Offer14 {

    public static void main(String[] args) {
       new Offer14().init();

    }

    private void init() {
        ListNode listNode = new ListNode(2);
        ListNode listNode1 = new ListNode(3);
        ListNode listNode3 = new ListNode(4);
        ListNode listNode4 = new ListNode(5);
        ListNode listNode5 = new ListNode(6);

        listNode.next = listNode1;
        listNode1.next = listNode3;
        listNode3.next = listNode4;
        listNode4.next = listNode5;
        ListNode listNode2 = FindKthToTail(listNode, 5);

        System.out.println(listNode2.val);

    }

    public ListNode FindKthToTail(ListNode head,int k) {

        ListNode temp = head;
        int count = 0;
        while (temp != null){
            count ++;
            temp = temp.next;

        }
        System.out.println(count);
        if (k > count || k <= 0){
            return null;
        }
        int j=0;

       while (j

希望大家可以多多指点,优化一下,
QQ群:552113611

你可能感兴趣的:(剑指offer(十四)链表中倒数第k个节点)