1. 程式人生 > >看圖理解單鏈表的反轉-java語言實現

看圖理解單鏈表的反轉-java語言實現

方法:使用3個指標遍歷單鏈表,逐個連結點進行反轉。

使用p和q兩個指標配合工作,使得兩個節點間的指向反向,同時用r記錄剩下的連結串列。

p = head;

q = head->next;

head->next = NULL;

現在進入迴圈體,這是第一次迴圈。

r = q->next;

q->next = p;

p = q;

q =r;

第二次迴圈。

r = q->next

q->next = p;    

p = q;

q = r

第三次迴圈。。。。。

具體程式碼如下

static Node reverseCsdn(Node head){
    //少於兩個節點沒有必要反轉
    if(head == null || head.next == null){
      return head;
    }
    Node p,q,r;
    p = head;
    q = head.next;
    head.next = null; //舊的頭指標就是新的尾指標,next需要指向null
    while (q != null){
      r = q.next;//先保留下一個step要處理的指標
      q.next = p;//然後pq交替工作進行反向
      p = q;
      q = r;
    }
    head = p;//最後q必然指向null,所以返回了p作為新的頭指標
    return head;
  }