【劍指offer】連結串列中第k個結點
阿新 • • 發佈:2018-12-04
帶測試函式
package demo2;
class Node {
int data;
Node next=null;
public Node(int data) {
this.data = data;
}
}
package demo2; public class MyLinkedList { Node head=null; public void addNode(int d){ Node newNode=new Node(d); if(head==null){ head=newNode; return; } Node tmp=head; while (tmp.next!=null){ tmp=tmp.next; } tmp.next=newNode; } public void print(){ Node tmp=head; while (tmp!=null){ System.out.println(tmp.data); tmp=tmp.next; } } public int length(){ int length=0; Node tmp=head; while(tmp!=null){ tmp=tmp.next; length++; } return length; } public Node FindElem(Node head,int k){ if(k<=0||k>this.length()) return null; Node p1=head; Node p2=head; for(int i=0;i<k-1;i++){ if(p1.next!=null){ p1=p1.next; }else{ return null; } } while (p1!=null){ p1=p1.next; p2=p2.next; } return p2.data; } public static void main(String args[]){ MyLinkedList list=new MyLinkedList(); list.addNode(5); list.addNode(4); list.addNode(3); list.addNode(2); list.addNode(1) list.print(); System.out.println("==================="); System.out.println(list.FindElem(head,2)); } }
以上程式碼有問題,之後再改