题目: 输入一个链表,输出该链表中倒数第k哥结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1,2,3,4,5,6。这个链表的倒数第3个结点是值为4的结点。
代码:
package offer;
import java.util.Scanner;
class Node2
{
int val;
Node2 next = null;
Node2(int val)
{
this.val = val;
}
}
public class ti22 {
public static int findKNode(Node2 head,int k)
{
Node2 p = head;
if(k<=0||head==null)
{
return -1;
}
while(k!=0)
{
k--;
p = p.next;
if(p==null)
{
return -1;
}
}
Node2 q = head;
while(p!=null)
{
q = q.next;
p = p.next;
}
return q.val;
}
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int k = sc.nextInt();
Node2 node1 = new Node2(1);
Node2 node2 = new Node2(2);
Node2 node3 = new Node2(3);
Node2 node4 = new Node2(4);
Node2 node5 = new Node2(5);
Node2 node6 = new Node2(6);
node1.next = node2;
node2.next = node3;
node3.next = node4;
node4.next = node5;
node5.next = node6;
Node2 head = node1;
System.out.println(findKNode(head,k));
}
}