單鏈表反轉
連結串列反轉的是將節點的指標指向前一個節點,並不是將節點反向的排序;

1.png
思路:
設計三個指標:Pc當前指標、PN下一個指標、Pr上一個指標:
第一次迴圈時:迴圈後Pn = Pc.Next ;第一個節點並沒有上一個節點所以 Pc.Next = Pr,實際為空;

2.png
第二次迴圈:經過第一次迴圈後 針對上圖,三個指標向前移動一步

3.png
然後再進行迴圈依次往下推;
總體程式碼結構如下:
自測通過:
LinkedList<int> ll = new LinkedList<int>(); ll.Insert(1); ll.Insert(2); ll.Insert(5); ll.Insert(8); ll.Insert(3); if (ll.Head == null)//判斷頭節點是否為空 { return; } if (ll.Head.Next == null)//連結串列只有一個節點 { Console.WriteLine(ll.Head.Data); } Node<int> pc = ll.Head;//當前節點 Node<int> pn = null;//下一個節點 Node<int> pr = null;//上一個節點 while (pc.Next != null) { pn = pc.Next;//給下一個節點賦值 pc.Next = pr;//反轉 當前節點的下一個節點應該上 pr pr = pc;//當賦值完成後,節點應該往下走一個,上一個節點變成當前節點 pc = pn;//下一個節點變成當前節點繼續迴圈 } //當整個迴圈走完後 最後一個節點 pc為節點值為8 pc.Next為空 pc.Next = pr; ll.Head = pc;