Q10--链表中倒数第k个结点

来源:互联网 发布:淘宝跨店满减卖家规则 编辑:程序博客网 时间:2024/06/02 23:43

一、题目描述

输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是值为4的结点。

二、java代码实现

/*class ListNode{    int val;    ListNode next;    ListNode(int x){ val =x;}}*/public class FindKthToTail {    public static void main(String[] args){        //构造一个单向链表        ListNode head = new ListNode(8);        ListNode p = head;        for(int i = 0; i < 5; i++)        {                       ListNode ln = new ListNode(i);                      p.next = ln;            p = p.next;        }        ListNode knode = find(head, 2);        System.out.println(knode.val);    }    public static ListNode find(ListNode head, int k){          if(head == null || k == 0) return null;        ListNode p = head;        for(int i = 0; i < k-1; ++i)        {            if(p.next == null) return null;            else                p = p.next;                 }        while(p.next != null)        {            p = p.next;            head = head.next;        }        return head;    }}
0 0
原创粉丝点击