<p align="left"> 算法思想:设置头尾指针,尾指针先移动到底n个位置,然后头尾一起移动,尾指针移动到最后时,头指针的位置就是倒数第n个位置。</p>
class listnode{
int data;
listnode next;
}
public class reorderoddeven {
public static void main(String args[]){
int[] n={1,3,5,7,9,11,13,15,17};
listnode list=CreateList(n);
System.out.println(laskK(list, 3));
}
//尾插法建立单链表
public static listnode CreateList(int[] n){
listnode head=new listnode();
head.data=n[0];
head.next=null;
listnode point=head;
for(int i=1;i<n.length;i++){
listnode node=new listnode();
node.data=n[i];
node.next=null;
point.next=node;
point=point.next;
}
return head;
}
//寻找倒数第n个数
public static int laskK(listnode list,int k){
listnode tail=list;
listnode head=list;
int i=1;
//先移动n次
while(tail.next!=null){
tail=tail.next;
i++;
if(i==k)break;
}
//head和tail一起移动,直到tail移动到最后一个,head的位置就是第n个
while(tail.next!=null){
tail=tail.next;
head=head.next;
}
return head.data;
}