劍指offer25 複雜鍊錶的複製

2021-09-14 01:33:48 字數 1379 閱讀 3989

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

不用輔助空間,實現 o(n) 的時間效率。

第一步仍然是根據原始鍊錶的每個結點n 建立對應的 n『 。這一次把 n『 鏈結在n的後面。

第二步設定複製出來的結點的 random。

**及注釋如下:/*

public class randomlistnode }*/

public class solution

//1.將複製結點連到相應結點的後面

randomlistnode pnode = phead;//複製乙個頭結點作為遍歷用的指標

while (pnode != null)

//2.設定random指標

pnode = phead;//重新指向煉表頭

while (pnode != null)

pnode = pnode.next.next;//兩步到達下乙個待處理結點

}//3.拆分兩個鍊錶,奇數字置為原鍊錶,偶數字置為新鍊錶,兩個鍊錶一毛一樣

pnode = phead;//pnode重新指向煉表頭

randomlistnode pheadcopy = pnode.next;//保留複製煉表頭

randomlistnode pnodecopy=pheadcopy;//指向複製煉表頭

//pnode連線pnodecopy後面的那個奇數結點,並前移

//初始狀態pnodecopy在前,pnode在後

//因此while(pnode!=null)而且先移動pnodecopy後移動pnode

pnode.next=pnodecopy.next;

pnode=pnode.next;

while(pnode!=null)

return pheadcopy;}}

劍指offer 25 複雜鍊錶的複製

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

劍指offer 25 複雜鍊錶的複製

輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 本題的最簡答的思路就是先實現結點與next指標的複製,然後利用遍歷整個鍊錶尋找每個結點的r...

劍指offer 25 複雜鍊錶的複製

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