劍指offer 反轉鍊錶

2021-07-11 09:26:58 字數 728 閱讀 7916

輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。

1.非遞迴

/*

struct listnode

};*/

class solution

listnode* ppre = null;

listnode* p = phead;

listnode* pnext = null;

while (p != null)

else

p = pnext;*/

}return ppre;}};

2.遞迴

遞迴的實現方式主要有4步:

1)如果head為空,或者只有head這乙個節點,return head即可;

2)先遍歷head->next為首的鍊錶,得到乙個頭結點newhead;

3)把head賦值給head->next->next, head->next為空;

4)返回newhead。

下圖也說明了上述步驟:

類似題目

遞迴部分參考

劍指offer 反轉鍊錶

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

《劍指offer》 反轉鍊錶

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

劍指offer 反轉鍊錶

題目 定義乙個方法 輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點 為了正確反轉乙個鍊錶,需要調整鍊錶每個節點對下乙個節點的指向。思路 1 把當前節點的下乙個節點儲存起來 當前節點的next 指向它前乙個節點之前要把它的後乙個節點儲存起來。因為後乙個節點只能通過當前節點的 next 找到,...