劍指offer 複雜鍊錶的複製

2021-07-15 19:33:05 字數 826 閱讀 6447

輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點),返回結果為複製後複雜鍊錶的head。(注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空)

第一步,複製原來鍊錶的節點,並設定next指標,這一步不同於簡單的複製節點,而是把每個複製的節點都鏈在原節點的後面,相當於複製節點之間隔了乙個原節點;第二步,設定複製節點的特殊指標,由於在第一步做了特殊處理,所以當乙個節點r的特殊指標指向節點n的時候,複製節點r』的特殊指標則是n』,這樣就可以在o(1)時間定位到r的特殊指標指向的節點;第三步,從鍊錶中抽取出複製節點,由於複製節點是間隔相連的,所以這一步比較好處理。綜合以上三個步驟,就完成了複雜鍊錶的複製。

/*

public class randomlistnode }*/

public

class solution

//第一步:複製鍊錶節點

private

void

clonenodes(randomlistnode phead)

}//第二步:設定每個節點的隨機指標

private

void

connectindexofnodes(randomlistnode phead)

}

//第三步:組合複製的節點

private randomlistnode connectfinalnodes(randomlistnode phead)

while (node != null)

return clonehead;

}}

劍指offer複雜鍊錶複製

題目描述 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 我的 思路比較笨,就是首先構造乙個正常的不大random指標的鍊錶,然後再去遍歷...

劍指offer 複雜鍊錶複製

輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 解題思路 1 複製每個節點,如 複製節點a得到a1,將a1插入節點a後面 2 遍歷鍊錶,a...

劍指offer 複雜鍊錶複製

題目描述 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 非遞迴方法 struct randomlistnode randomlistno...