您的位置:首页 > Web前端

nowcoder_剑指offer_链表中倒数第K个结点

2017-01-25 15:41 465 查看
输入一个链表,输出该链表中倒数第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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  链表