定義乙個函式,輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點。鍊錶節點定義如下:
struct listnode
int m_nkey;
listnode* m_pnext;
思路:額,一路遍歷下去,前後指向反過來,最後乙個節點就輸出。o(n)的效率也應該是最優的了。
答案如下:
listnode* reverselist(listnode* phead)
listnode* preversedhead=nullptr;
listnode* pnode=phead;
listnode* pprev=nullptr;
while(pnode!=nullptr)
return preversedhead;
心得:如果出現斷裂的情況,就應該加乙個指標提前記錄。
面試題 反轉鍊錶
面試題 反轉鍊錶 思路 要實現鍊錶反轉,需要調整鍊錶中指標方向,使鍊錶反轉後的頭結點為原鍊錶的尾結點。為了防止結點斷裂,需定義三個指標,分別指向當前遍歷的結點,它的前一結點以及後乙個結點。當然編寫 時要考慮到下列三點 防止程式崩潰 將思路用 實現為 slistnode node phead 當前結點...
面試題 反轉鍊錶
題目 輸入乙個鍊錶的頭結點,反轉該鍊錶,並返回反轉後鍊錶的頭結點。如下 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 通過遍歷整個鍊...