1. 程式人生 > >014 鏈表中倒數第k個結點

014 鏈表中倒數第k個結點

校驗 find ava 第一個 ack [] urn 輸入 void

1.題目

  輸入一個鏈表,輸出該鏈表中倒數第k個結點。

2.思路

  Java代碼,通過校驗。代碼思路如下:兩個指針,先讓第一個指針和第二個指針都指向頭結點,然後再讓第一個指正走(k-1)步,到達第k個節點。

  然後兩個指針同時往後移動,當第一個結點到達末尾的時候,第二個結點所在位置就是倒數第k個節點了。
  

3.程序

 1 package first;
 2 
 3 public class FindKthToTailTest {
 4     public static void main(String[] args){
 5         ListNode head = new
ListNode(); 6 ListNode second = new ListNode(); 7 ListNode third = new ListNode(); 8 ListNode forth = new ListNode(); 9 head.next = second; 10 second.next = third; 11 third.next = forth; 12 head.val = 1; 13 second.val = 2;
14 third.val = 3; 15 forth.val = 4; 16 FindKthToTailTest test = new FindKthToTailTest(); 17 ListNode result = test.FindKthToTail(head, 1); 18 System.out.println(result.val); 19 } 20 21 public ListNode FindKthToTail(ListNode head,int k){ 22 if
(head == null || k <= 0){ 23 return null; 24 } 25 ListNode ANode = head; 26 ListNode BNode = null; 27 for(int i = 0;i<k-1;i++){ 28 if(ANode.next != null) 29 ANode = ANode.next; 30 else 31 return null; 32 } 33 BNode = head; 34 while(ANode.next != null){ 35 ANode = ANode.next; 36 BNode = BNode.next; 37 } 38 return BNode; 39 } 40 }

014 鏈表中倒數第k個結點