輸出連結串列中倒數第k個結點
阿新 • • 發佈:2018-12-21
設定2個指標:fast和slow都指向頭結點,fast先移動k-1步,判斷是否到達連結串列尾部,若到達,說明k不合法;然後fast和slow同時移動,迴圈直到先行的指標值為NULL值,另一個指標所指的位置就算要查詢的位置
public class FindK { public static void main(String[] args){ Node n1=new Node(5); Node n2=new Node(3); Node n3=new Node(9); Node n4=new Node(2); n1.next=n2; n2.next=n3; n3.next=n4; Node n=new FindK().findK(n1,2); System.out.println(n.data); } public Node findK(Node head,int k){ if(head==null||k<1) return null; Node p=head; Node q=head; for(int i=0;i<k-1&&p!=null;i++){//前移k-1步 p=p.next; } if(p==null) { System.out.println("k不合法"); return null; } while(p.next!=null){//同時後移 p=p.next; q=q.next; } return q; } }