劍指off 複製複雜鍊錶

2021-07-03 22:45:05 字數 833 閱讀 9042

題目:鍊錶的結構中多了乙個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...