java在链表中找倒数第k个值:
方法1:先求出链表的长度length,再利用length-k重新遍历,其中,当length<k时,那就没有这个值,需返回null;
方法2:设置两个结点,利用双引用遍历,让结点1先遍历k次,走在节点2的前面,其中要注意结点1为null时返回;
然后再在结点1不为空时,先走结点1,再走结点2,直至结点1为空;最后返回结点2
//找倒数第k个值, 法1
public static Node FindkthToTail(Node head,int k){
int length=0;
for(Node cur=head;cur!=null;cur=cur.next){
length++;
}
if(length<k){
return null;
}
else{
int n=length-k;
Node val=head;
for(int i=0;i<n;i++){
val=val.next;
}
return val;
}
}
//找倒数第k个值, 法2
public static Node FindkthToTai2(Node head,int k){
Node back=head;
Node front=head;
for(int i=0;i<k;i++){
if(front==null){
return null;
}
front=front.next;
}
while(front!=null){
front=front.next;
back=back.next;
}
return back;
}