學習目標:
用于記錄每日刷的題目為了明年的python組藍橋杯做準備,今天是打卡的第二天,沖!

原題:鏈表的反轉
題目描述:
給你單鏈表的頭節點
head,請你反轉鏈表,并回傳反轉后的鏈表,
示例1:
輸入:head = [1, 2, 3, 4, 5]
輸出:[5, 4, 3, 2, 1]
示例2:
輸入:head = [1, 2]
輸出:[2, 1]
題解:
思路一(運用堆疊):
運用堆疊的特性先進后出,先將鏈表的元素壓入堆疊中,讓后再使用尾接法接回,
代碼:

思路二(遞回)
1.使用遞回函式,一直遞回到鏈表的最后一個結點,該結點就是反轉后的頭結點,記作 newhead.
2.然后再每次函式在回傳的程序中,讓當前結點的下一個結點的 next.next 指標指向當前節點,同時讓當前的指標指向None
3.當遞回函式全部出堆疊后,鏈表反轉完成,
代碼:
思路三(雙指標)
1.定義兩個指標pre和cur分別指向None和head
2.用tmp指標來記錄cur指標的下一個節點,然后讓cur指標指向pre實作區域的反轉
3.再讓pre指向cur,cur指向tmp讓指標向后移動一位,重復上面的步驟
4.知道cur指標為空,則反轉結束,此時pre指標指向的為反轉后的頭節點,回傳pre,
代碼:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/374636.html
標籤:其他
下一篇:奧賽一本通1026:空格分隔輸出
