面試常見演算法之 反轉鍊錶

2021-07-16 03:30:25 字數 453 閱讀 2758

思路:以單鏈表有4個節點為例,1->2->3->4

反轉就是取2,放到1前面;繼續取3放到2前面,取4放到3前面。注意取是指的next指標指向它,鍊錶的記憶體空間不是連續的,我們要做的就是把next指的物件變一變。

用乙個tail指標指向第乙個節點(因為它後面的最後都會跑到它前面),讓這個指標指向的物件始終不變,讓tail.next不斷調整,依次指向後面。

cur指標指向當前節點,要做的就是把cur 邏輯前移(比如 cur==2,要移到1前面,1和3鏈起來;3要移到2前面,把1和4鏈起來;4要移到最前面,1.next=null,置逆完成)

head指向 調整之後的煉表頭,最後指在了4

**如下:
public class node

} public node reverselist(node head)

return head;

演算法之反轉鍊錶

問題很簡單 反轉乙個鍊錶。其實就是對鍊錶的基礎操作,思路是順著煉表頭結點的next指標遍歷整個鍊錶。假設鍊錶前三個節點分別為a b c。1.a next c 2.b next a 以a的next節點作為判斷依據即可遍歷整個鍊錶並實現前後兩個節點的指標反轉。雖然思路很簡單,但寫的時候發現c的快忘得差不...

面試演算法 鍊錶反轉

今天來將一下面試中經常問到的乙個問題 鍊錶反轉。題目1 給乙個單向鍊錶,請編寫乙個函式,把鍊錶反轉,並把反轉的鍊錶返回。假設給的節點為 class listnode 單向鍊錶反轉函式如下 public listnode reverse1 listnode head return prev 題目2 給...

面試 反轉鍊錶

interview work jobc 經典演算法題目 反轉單鏈表 reverse list 對於乙個普通的單鏈表,可以定義成結構體形式 定義鍊錶節點 struct listnode 請寫乙個函式實現單鏈表的翻轉 題目解析 一般來說,單鏈表的反轉有遞迴和非遞迴的方式來進行實現,此處的反轉實現 參考反...