關於反轉單向連結串列
阿新 • • 發佈:2019-09-26
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 設為“頭節點”
第一次迴圈完畢,進入第二次迴圈