天天看點

資料結構:單向連結清單系列7--交換相鄰兩個節點2(交換鍊域/指針域)

給定一個單向連結清單,編寫函數交換相鄰 兩個元素

輸入: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 輸出: 2 -> 1 -> 4 -> 3 -> 6 -> 5 -> 7
輸入: 1 -> 2 -> 3 -> 4 -> 5 -> 6 輸出: 2 -> 1 -> 4 -> 3 -> 6 -> 5

通過觀察發現:當輸入的與元素個數是單數的時候,最後一位不參與交換。 

當連結清單節點中的資料字段不多的時候我們可以交換資料域的指針來實作相鄰兩個節點的交換。

當資料域太多時操作成本将非常昂貴,該情形下,更改鍊域(指針域)将是一個更好的解決方法。

以下是代碼的實作:

時間複雜度:O(n)

c語言:

資料結構:單向連結清單系列7--交換相鄰兩個節點2(交換鍊域/指針域)

 java代碼:

c#代碼:

遞歸法:

結果:

資料結構:單向連結清單系列7--交換相鄰兩個節點2(交換鍊域/指針域)

c#

繼續閱讀