题目描述:给出链表的头指针,求链表中倒数第K个结点的值。
解决思路:定义两个指针p,q。p移动k个位置后,q开始移动。
代码:
package mango.list;
/**
* 课后练习21题
* @since 2016/10/21
* @author mango
* @descripe 给出链表的头指针,求链表中倒数第K个结点的值。
*/
public class P038Test21 {
public static void main(String[] args) {
//构造链表
}
/**
* 算法核心代码
* @param head
* @param k
* @return
*
* 定义两个指针p,q。p移动k个位置后,q开始移动
*/
public int solve(Node head,int k){
int moveStep = 0;
Node p = head.link;
Node q = head.link;
//先将p移动K个位置
while(moveStep<k){
moveStep++;
if(p!=null)
p = p.link;
else
return 0;
}
while(p!=null){
p = p.link;
q = q.link;
}
return q.date;
}
//结点的定义
public static class Node{
int date;
Node link;
}
}