劍指offer 複雜鍊錶的複製

2021-07-10 11:17:39 字數 1187 閱讀 6957

輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點)。

圖 4.8 是乙個含有 5 個結點的複雜鍊錶。圖中實線箭頭表示 next 指標,虛線箭頭表示 sibling 指標。為簡單起見,指向 null 的指標沒有畫出。

在不用輔助空間的情況下實現 o(n)的時間效率。

第一步:仍然是根據原始鍊錶的每個結點n 建立對應的 n』。把 n』鏈結在n的後面。圖 4.8 的鍊錶經過這一步之後的結構,如圖 4.9 所示。

第二步:設定複製出來的結點的 sibling。假設原始鍊錶上的 n 的 sibling 指向結點 s,那麼其對應複製出來的 n』是 n的 pext 指向的結點,同樣 s』也是 s 的 next 指向的結點。設定 sibling 之後的鍊錶如圖 4.10 所示。

第三步:把這個長鍊表拆分成兩個鍊錶。把奇數字置的結點用 next 鏈結起來就是原始鍊錶,把偶數字置的結點用 next 鏈結起來就是複製 出來的鍊錶。圖 4.10 中的鍊錶拆分之後的兩個鍊錶如圖 4.11 所示。

劍指offer複雜鍊錶複製

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

劍指offer 複雜鍊錶複製

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

劍指offer 複雜鍊錶複製

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