劍指Offer 反轉鍊錶

2021-08-25 23:04:01 字數 531 閱讀 6976

題目鏈結

輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。

思路:鍊錶反轉最少要儲存前後兩個節點pre,next,詳解見**

**:

/*

struct listnode

};*/

class solution

listnode* pre=nullptr;

listnode* next=nullptr;

/**當前節點是head,pre為當前節點的前一節點,next為當前節點的下一節點

需要pre和next的目的是讓當前節點從pre->head->next1->next2變成pre<-head next1->next2

即pre讓節點可以反轉所指方向,但反轉之後如果不用next節點儲存next1節點的話,此單鏈表就此斷開了

所以需要用到pre和next兩個節點

*/while(phead!=nullptr)

///此時鍊錶已經反轉完畢

return pre;

}};

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