您的位置:首页 > 编程语言 > Java开发

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

2016-09-05 10:28 204 查看

一、题目描述

输入一个链表,输出该链表中倒数第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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 链表