劍指offer 學習筆記 反轉鍊錶

2021-10-03 06:47:56 字數 972 閱讀 4791

面試題24:反轉鍊錶。定義乙個函式,輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點,鍊錶節點定義如下:

struct listnode 

;

#include

#include

using

namespace std;

struct listnode

;listnode*

reverselist

(listnode* phead)

listnode* prenode =

nullptr

; listnode* pnode = phead;

listnode* preversedhead =

nullptr

;while

(pnode !=

nullptr

) pnode-

>m_pnext = prenode;

// 使當前節點的下一節點指標指向前一節點

prenode = pnode;

// 把當前節點記錄為下一節點的前一節點

pnode = pnext;

// 向後繼續遍歷鍊錶

}return preversedhead;

}void

addtotail

(listnode*

* phead,

int value)

else

pnode-

>m_pnext = pnew;

// 將鍊錶末尾元素的指標指向新節點}}

void

printlistreversingly_iteratively

(listnode* phead)

while

(!nodes.

empty()

)}intmain()

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