劍指offer 反轉鍊錶

2021-07-13 19:11:33 字數 921 閱讀 5236

題目:定義乙個方法 輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點

為了正確反轉乙個鍊錶,需要調整鍊錶每個節點對下乙個節點的指向。

思路:(1

)把當前節點的下乙個節點儲存起來

當前節點的next

指向它前乙個節點之前要把它的後乙個節點儲存起來。因為後乙個節點只能通過當前節點的

next

找到,如果不提前儲存起來,當前節點的

next

指向它的前乙個節點後,它後面的節點將失去引用找不到了。

(2

)判斷是否達到尾節點

若果當前節點的下乙個節點是空的話 那麼當前節點就是鍊錶的尾節點 也就是反轉後鍊錶的頭節點。

(3

)當前節點的

next

指向當前節點的前乙個節點(實現當前節點指向反轉)

(4

)將當前節點的前乙個節點和當前節點都後移

**:

/*

public class listnode

}*/public class solution

//若沒有到達尾節點則指標反轉

currentnode.next = prevnode;//讓當前節點的next指向它前乙個

prevnode = currentnode;

currentnode = nextnode;

}return reversehead;

}}

劍指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 ...