面試題 反轉鍊錶

2021-08-18 05:30:34 字數 750 閱讀 5132

面試題:反轉鍊錶

思路:要實現鍊錶反轉,需要調整鍊錶中指標方向,使鍊錶反轉後的頭結點為原鍊錶的尾結點。為了防止結點斷裂,需定義三個指標,分別指向當前遍歷的結點,它的前一結點以及後乙個結點。

當然編寫**時要考慮到下列三點(防止程式崩潰):

將思路用**實現為

slistnode* node=phead; //當前結點

slistnode* prev=

null;//前一結點

slistnode* next=node->_next;//下一結點

//反轉邏輯

prev=node->_next;

prev=node;

node=next;

完整實現**:

#include

#include

#include

"slist.h"

slistnode* reverseslist(slistnode* phead)

else

return reversenode;

}}int main()

結果如下:

面試題 反轉鍊錶

定義乙個函式,輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點。鍊錶節點定義如下 struct listnode int m nkey listnode m pnext 思路 額,一路遍歷下去,前後指向反過來,最後乙個節點就輸出。o n 的效率也應該是最優的了。答案如下 listnode r...

面試題 反轉鍊錶

題目 輸入乙個鍊錶的頭結點,反轉該鍊錶,並返回反轉後鍊錶的頭結點。如下 include iostream using namespace std struct node 返回反向鍊錶的頭結點 node reserve node head return pre int main 正向遍歷鍊錶 node...

面試題 反轉鍊錶

定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉後鍊錶的頭結點。思考題 樣例輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 這道題使用迭代的思想很容易思考,我們只需要準備三個指標,分別是上乙個節點prev 當前節點curr和curr的下乙個節點node 通過遍歷整個鍊...