劍指offer 反轉鍊錶(阿里面試)

2021-10-21 12:09:47 字數 691 閱讀 5935

題目描述

輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。

示例1

輸入

返回值

解法

以3個節點為例:

用pre記錄當前節點的前乙個節點

用next記錄當前節點的後乙個節點

定義乙個新的節點cur賦值為head

當前節點a不為空,進入迴圈,先記錄a的下乙個節點位置next = b;再讓a的指標指向pre

移動pre和cur的位置,正因為剛才記錄了下乙個節點的位置,所以該鍊錶沒有斷,我們讓cur走向b的位置。

當前節點為b不為空,先記錄下乙個節點的位置,讓b指向pre的位置即a的位置,同時移動pre和head

當前節點c不為空,記錄下乙個節點的位置,讓c指向b,同時移動pre和cur,此時cur為空,跳出,返回pre。

public

class

solution

listnode cur = head;

listnode pre = null;

listnode next = null;

while

(cur != null)

return pre;

}}

劍指offer 反轉鍊錶

輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。方法1 將單鏈表儲存為陣列,然後按照陣列的索引逆序進行反轉。方法2 使用三個指標遍歷單鏈表,逐個鏈結點進行反轉。方法3 從第2個節點到第n個節點,依次逐節點插入到第1個節點 head節點 之後,最後將第乙個節點挪到新錶的表尾。public class l...

劍指offer 反轉鍊錶

輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。1.非遞迴 struct listnode class solution listnode ppre null listnode p phead listnode pnext null while p null else p pnext return p...

《劍指offer》 反轉鍊錶

輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。之前錯誤的寫法,一直不明白 原因是移位的時候,pcurr移到下一位時,裡面的值已經變成反向指標了,所以不能成功移動,就迴圈巢狀進去了,所以還需要乙個變數pnext來儲存移位前的值。struct listnode class solution phead ...