思路:第一步,複製原來鍊錶的節點,並設定next指標,這一步不同於簡單的複製節點,而是把每個複製的節點都鏈在原節點的後面,相當於複製節點之間隔了乙個原節點;第二步,設定複製節點的特殊指標,由於在第一步左了特殊處理,所以當乙個節點r的特殊指標指向節點n的時候,複製節點r』的特殊指標則是n』,這樣就可以在o(1)時間定位到r的特殊指標指向的節點;第三步,從鍊錶中抽取出複製節點,由於複製節點是間隔相連的,所以這一步比較好處理。綜合以上三個步驟,就完成了複雜鍊錶的複製。
/*
public class randomlistnode }*/
public
class solution
// 第一步:複製鍊錶節點
private
void
clonenodes(randomlistnode phead)
}// 第二步:設定每個節點的隨機指標
private
void
connectsiblingnodes(randomlistnode phead)
node = clone.next;}}
// 第三步:組合複製的節點
private randomlistnode connectfinallistnodes(randomlistnode phead)
while (node != null)
return clonehead;
}}
劍指Offer 24 複雜鍊錶的複製
輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 使用此方法的原因是對隨機節點時很好判斷,指向正確的節點。public class rand...
python劍指offer系列複雜鍊錶的複製
題目 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 solution 複雜鍊錶的複製 雜湊法 class randomlistnode ...
2 4 劍指offer 反轉鍊錶
輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。迭代法 畫圖模擬,發現需要三個指標來完成反轉,需要儲存下乙個節點,因為反轉後會丟失和後面節點的連線。注意頭節點的next要變成none 尾節點 返回節點是原來的尾節點。遞迴法 新建乙個頭節點指向尾節點的,每次遞迴返回值不變。每次遞迴傳入的節點phead是此...