劍指25 - 複雜鍊錶的複製
輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標random指向乙個隨機節點),
請對此鍊錶進行深拷貝,並返回拷貝後的頭結點。(注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空)
/*
public class randomlistnode }*/
public class solution
// 2.處理轉殖節點的random指向,a1.random = a.random.next;
randomlistnode a0 = phead;
while( a0 != null)
// 3.建立轉殖節點頭,分離轉殖節點
randomlistnode start = phead;
randomlistnode ret = start.next;
while(start != null)
return ret;}}
小總結:三個while迴圈
1.先在原煉表上建立新鍊錶
2.再維護新的鍊錶的random指標指向
3.分離原煉表和新鍊錶
4.注意考慮末端節點的情況
25 劍指offer 複雜鍊錶的複製
分解讓複雜問題簡單 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 struct randomlistnode class solutio...
劍指offer 25 複雜鍊錶的複製
輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 include include include using namespace std s...
劍指offer 25 複雜鍊錶的複製
輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 本題的最簡答的思路就是先實現結點與next指標的複製,然後利用遍歷整個鍊錶尋找每個結點的r...