1. 程式人生 > >單鏈表反轉,返回反轉後連結串列頭結點--360測試實習生面試題

單鏈表反轉,返回反轉後連結串列頭結點--360測試實習生面試題

為了正確反轉一個連結串列,需調整指標指向,例如i,m,n是3個相鄰結點,假設結點i之前的指標已調整完畢,,這些結點的next指標都指向前面一個結點,遍歷到結點m時,需要調整結點的next指標,避免連結串列斷開,在調整之前需儲存n,然後找反轉後連結串列的頭結點(即原連結串列的尾結點,next為空指標的結點)

class Node{
    int data;
    Node next;
    public Node(int data){
        this.data=data;
    }
}
public class ListReverse {

    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 ListReverse().reverse(n1);
        System.out.println(n.data);

    }
    public  Node reverse(Node head){
        Node preNode=null;
        Node curNode=head;
        while(curNode!=null){
            Node nextNode=curNode.next;
            if(nextNode==null) {
                return curNode;
            }
            curNode.next=preNode;
            preNode=curNode;
            curNode=nextNode;
        }
        return preNode;
    }
}