輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點),返回結果為複製後複雜鍊錶的head。
使用hash_map容器按順序儲存每個節點,並生成乙個新的節點,不過在加入hash_map前,要先判斷節點是否已經存在容器中,已判斷鍊錶是否是迴圈鍊錶。
同理,在遍歷hash_map容器時,要用另乙個容器set儲存當前已存在的節點,若當前節點的next節點已在set容器中,那麼我們可以判斷此煉表為迴圈鍊錶,應該終止遍歷了。
同時,還要注意random指標可能指向null,只有當random指標不指向null時,我們才能在hash_map中找到它對應指向的節點。
/*
struct randomlistnode
};*/
class solution
unordered_maphash_map;
setset;
randomlistnode* p = phead;
while (p!=null)
p = phead;
while (p!=null)
return hash_map[phead];
} };
刷題 複雜鍊錶的複製
輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 第一反應 分兩步。第一步考慮next,第二步考慮random。利用雜湊表建立對映關係。co...
演算法題 複雜鍊錶的複製
複雜鍊錶的複製 請實現函式complexlistnode clone complexlistnode phead 複製乙個複雜鍊錶。在複雜鍊錶中,每個節點除了有乙個m pnext指標指向下乙個節點,還有乙個m psibling指標指向鍊錶中的任意節點或者nullptr。節點的c 定義如下 後面 均為...
演算法題 複雜鍊錶的複製
請實現函式complexlistnode clone complexlistnode phead 複製乙個複雜鍊錶,在複雜鍊錶中,每個結點除了有乙個m ppext指標指向下乙個結點外,還有乙個m psibling指向鍊錶中的任意結點或者 null。結點的 c 定義如下 struct complexl...