單鏈表,官方釋義為:是一種鏈式存取的資料結構,用一組地址任意的儲存單元存放線性表中的資料元素。連結串列中的資料是以結點來表示的,每個結點的構成:元素(資料元素的映象) + 指標(指示後繼元素儲存位置),元素就是儲存資料的儲存單元,指標就是連線每個結點的地址資料。如圖:
單鏈是單向的,只能單向訪問,現需要將連結串列翻轉過來,也就是說next指標要反向。
當然這裡有個簡單的思路:遍歷一遍連結串列,將每個元素都儲存進vector容器,然後反向迭代vector的每個元素,並將元素的next指標指向容器中前一個元素。這是最簡單的方式,實現起來也十分好理解;
但是這種方式並不是鵝廠想要的,因為他們想考的是面試者對連結串列資料結構的理解程度,以及邏輯思維的深度。
單鏈表反轉,我們需要處理的就是當前節點、當前節點前一個節點、當前節點後一個節點,這三個節點之間的邏輯關係(node_head、node_temp_pre、node_temp_next)。其實我們只需要將頭指標逐步順著連結串列往後移,並且在移動過程中,改變next的指向。
思路實現關鍵點:
首先我們得在改變當前節點next指向之前將next指向的節點訪問出來並透過指標儲存起來,不然噹噹前節點的next指向改變再來訪問就訪問不到了
然後將next指向node_temp_pre(之前儲存的前一個節點)
再然後要做好準備將head往後移動一位,將當前節點賦值給node_temp_pre,作為後續節點的next節點
最後移動head
這樣您應該可以很清楚的記住翻轉連結串列的實現方法了吧!
單鏈表,官方釋義為:是一種鏈式存取的資料結構,用一組地址任意的儲存單元存放線性表中的資料元素。連結串列中的資料是以結點來表示的,每個結點的構成:元素(資料元素的映象) + 指標(指示後繼元素儲存位置),元素就是儲存資料的儲存單元,指標就是連線每個結點的地址資料。如圖:
單鏈是單向的,只能單向訪問,現需要將連結串列翻轉過來,也就是說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
題解這樣您應該可以很清楚的記住翻轉連結串列的實現方法了吧!