劍指Offer第26題(複雜鍊錶的複製)

2021-10-01 06:59:44 字數 716 閱讀 9736

(本部落格旨在個人總結回顧)

題目描述:

請實現函式complexlistnode* clone(complexlistnode* phead),複製乙個複雜鍊錶。在複雜鍊錶中,每個結點除了有乙個m_pnext指標指向下乙個結點外,還有乙個m_psibling指向鍊錶中的任意結點或者null.

結點的c++定義如下:

struct complexlistnode

;

解題思路:

解法一:

使用分治法處理題目:①先簡單拷貝鍊錶,並儲存鍊錶各個結點及其對應的各個拷貝結點。②將簡單拷貝的鍊錶每個結點m_psibling指向其對應拷貝的結點。

此方法時間複雜度為o(n),並且需要輔助空間。可使用map對映儲存原結點及其拷貝結點。

完整**:

#include "stdafx.h"

#include #include using namespace std;

struct complexlistnode

{ int m_nvalue;

complexlistnode* m_pnext;

complexlistnode* m_psibling;

劍指Offer26複雜鍊錶的複製

題目 請實現函式複製乙個複雜鍊錶,在複雜鍊錶中,每個結點除了有乙個m pnext指標指向下乙個結點外,還有乙個m psibling指向鍊錶中的任意結點或者null。分析 這個題還是挺有難度的,我剛拿到題的時候想的是我可以先把簡單鍊錶複製一遍,然後再從頭挨著找m psibling指標指向的結點,這樣一...

劍指Offer 26 複雜鍊錶的複製

題目 有乙個複雜鍊錶,其結點除了有乙個m pnext指標指向下乙個結點外,還有乙個m psibling指向鍊錶中的任一結點或者null。其結點的c 定義如下 請完成函式complexnode clone complexnode phead 以複製乙個複雜鍊錶。第一種方法 分成兩步 第一步是複製原始鍊...

劍指offer 26 複雜鍊錶的複製

輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 用乙個輔助字典,儲存原鍊錶和複製鍊錶的對應關係。第二次遍歷的時候,生成random節點。c...