1.複製原始鍊錶的每乙個結點,並用m_pnext鏈結;設定每乙個結點的m_psibling指標。但該指標可能指向此結點的前面或後面,需從頭定位。時間複雜度為o(n^2)
2.雜湊表存著配對資訊,o(n)
3.
//將原始結點n建立對應的n'。這一次,把n'連線到n的後面
void clonenodes(complexlistnode* phead)
}//設定複製出來的結點的m_psibling
void connectsiblingnodes(complexlistnode* phead)
pnode=pcloned->m_pnext;
}} //將長鍊錶拆分成兩個鍊錶
complexlistnode* reconnectnodes(complexlistnode* phead)
while(pnode!=null)
return pclonedhead;
}//總的複製鍊錶的過程
complexlistnode* clone(complexlistnode* phead)
26 複雜鍊錶的複製
題目描述 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 注 以下解析來自程式設計師面試題精選100題 49 複雜鍊錶的複製 演算法 精簡。第一步,為原始鍊錶的每個節點n建立對應的節點n 並把n 插入到n的後面 第二步,設定複製出來的節點的si...
26 複雜鍊錶的複製
輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的 head。建立 random 鏈結 28 cur phead 29while cur null 34 cur clone next 35 3637 拆分 38 cur ...
面試題26 複雜鍊錶的複製
以下圖為5個結點的複雜鍊錶,實線表示m pnext指標的指向,虛線表示m psibling指標的指向 方法一 分兩步 1 遍歷一遍鍊錶,用m pnext指標將鍊錶連起來,o n 2 確定每個m psibling指標的指向,需重新遍歷新鍊錶確定其m psibling的指向,o n 時間代價為o n 2...