输入一个链表,输出该链表中倒数第k个结点。
参考:http://blog.csdn.net/tayanxunhua/article/details/11100097/
LinkList.java
/**
* Created by xizwu on 2017/1/25.
*/
public class LinkList {
public ListNode first;
private int pos=0;
public LinkList(){
this.first=null;
}
//插入一个头结点
public void addFirstNode(int data){
ListNode node=new ListNode(data);
node.next=first;
first=node;
}
public ListNode deleteFirstNode(){
ListNode tempNode=first;
first=tempNode.next;
return tempNode;
}
public void displayAllNodes(){
ListNode current=first;
while(current!=null){
current.display();
current=current.next;
}
System.out.println();
}
}
ListNode.java
/**
* Created by xizwu on 2017/1/25.
*/
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
public void display(){
System.out.print(val+" ");
}
}
Solution.java
/**
* Created by xizwu on 2017/1/25.
*/
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
if(head==null||k<=0){
return null;
}
ListNode pre=head;
ListNode last=head;
for(int i=1;i<k;i++){
if(pre.next!=null){
pre=pre.next;
}
else{
return null;
}
}
while(pre.next!=null){
pre=pre.next;
last=last.next;
}
return last;
}
}
Main.java
/**
* Created by xizwu on 2017/1/25.
*/
public class Main {
public static void main (String[] args){
System.out.print("start up,");
System.out.println("insert number:");
LinkList linkList=new LinkList();
linkList.addFirstNode(1); //头插法
linkList.addFirstNode(2);
linkList.addFirstNode(3);
linkList.addFirstNode(4);
linkList.addFirstNode(5);
linkList.addFirstNode(6);
Solution mysolution=new Solution();
ListNode mynode= mysolution.FindKthToTail(linkList.first,2);
mynode.display();
}
}