首頁>Club>
如果讓我看連結串列翻轉的程式碼的話,我可以看懂。但是怎麼都記不住連結串列翻轉的邏輯。
4
回覆列表
  • 1 # 程式設計老大叔

    單鏈表,官方釋義為:是一種鏈式存取的資料結構,用一組地址任意的儲存單元存放線性表中的資料元素。連結串列中的資料是以結點來表示的,每個結點的構成:元素(資料元素的映象) + 指標(指示後繼元素儲存位置),元素就是儲存資料的儲存單元,指標就是連線每個結點的地址資料。如圖:

    單鏈是單向的,只能單向訪問,現需要將連結串列翻轉過來,也就是說next指標要反向。

    1、簡單思路:

    當然這裡有個簡單的思路:遍歷一遍連結串列,將每個元素都儲存進vector容器,然後反向迭代vector的每個元素,並將元素的next指標指向容器中前一個元素。這是最簡單的方式,實現起來也十分好理解;

    但是這種方式並不是鵝廠想要的,因為他們想考的是面試者對連結串列資料結構的理解程度,以及邏輯思維的深度。

    2、從連結串列角度的思路

    單鏈表反轉,我們需要處理的就是當前節點、當前節點前一個節點、當前節點後一個節點,這三個節點之間的邏輯關係(node_head、node_temp_pre、node_temp_next)。其實我們只需要將頭指標逐步順著連結串列往後移,並且在移動過程中,改變next的指向。

    思路實現關鍵點:

    首先我們得在改變當前節點next指向之前將next指向的節點訪問出來並透過指標儲存起來,不然噹噹前節點的next指向改變再來訪問就訪問不到了

    然後將next指向node_temp_pre(之前儲存的前一個節點)

    再然後要做好準備將head往後移動一位,將當前節點賦值給node_temp_pre,作為後續節點的next節點

    最後移動head

    題解

    這樣您應該可以很清楚的記住翻轉連結串列的實現方法了吧!

  • 中秋節和大豐收的關聯?
  • excel中如何將一列中每個單元格中資料乘以10?