題目:鍊錶的結構中多了乙個spring指標,這個指標可能指向鍊錶中的任何乙個節點,複製這個複雜鍊錶。
分析:首先想到的是第一種方法,複製next串聯起來的鍊錶,然後複製spring 指標,但是每次都要從頭順序查詢spring指標在副本中的值,那麼這個效率應該是o(n^2)
第二種方法是將副本建立在原來的鍊錶中,在每乙個原node後面新建我們的node,因為這還算乙個鍊錶,那麼在複製spring指標的時候,只需要順序一次,每次都是指向spring->next,最後最一次分割,next=nex->next;
struct complexnode
;//第一步複製
void clone(complexnode* pnode)
}//第二步複製spring
void clonespring(complexnode* phead)
while (pnodeclone!=null)
pnodeclone=pnodeclone->next->next;
}}//第三步分解兩個
complexnode *reseolve(complexnode* phead)
while (pnodeclone!=null)
pnode->next=pnodeclone->next;
pnode=pnode->next;
pnodeclone->next=pnode->next;
pnodeclone=pnodeclone->next;
}printfclone(pnodeclonehead);
return pnodeclonehead;
}
劍指offer複雜鍊錶複製
題目描述 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 我的 思路比較笨,就是首先構造乙個正常的不大random指標的鍊錶,然後再去遍歷...
劍指offer 複雜鍊錶複製
輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 解題思路 1 複製每個節點,如 複製節點a得到a1,將a1插入節點a後面 2 遍歷鍊錶,a...
劍指 複雜鍊錶的複製
輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 1.按順序複製每個節點,並將新節點加到原節點後,比如a b,得到a a1 b b1 whi...