看圖理解單鏈表的反轉-java語言實現
阿新 • • 發佈:2018-12-21
方法:使用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; }