1. 程式人生 > >關於反轉單向連結串列

關於反轉單向連結串列


public class Node {
    public int value;
    public Node next;

    public Node(int data){
        this.value = data;
    }
}



public Node reverseList(Node head){

    Node pre = null;
    Node next = null;

    while (head != null) {

        next = head.next;

        head.next = pre;

        pre = head;

        head = next;
    }

    return pre;
}

反轉前: 

反轉後:

解析反轉函式:

第一步:next = head.next 
將 head.next 賦值給 next 變數,也就是說 next 指向了節點2,先將節點2 儲存起來。

第二步:head.next = pre 
將 pre 變數賦值給 head.next,即 節點1 指向了 null

第三步:pre = head

將 head 賦值給了 pre,即 pre 指向節點1,將節點1 設為“上一個節點”

第四步:head = next

將 next 賦值給 head,即 head 指向了節點2。將節點2 設為“頭節點”

第一次迴圈完畢,進入第二次迴圈