JZ25 複雜鍊錶的複製

2022-09-19 04:18:11 字數 915 閱讀 7185

輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標random指向乙個隨機節點),請對此鍊錶進行深拷貝,並返回拷貝後的頭結點。(注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空)。 下圖是乙個含有5個結點的複雜鍊錶。圖中實線箭頭表示next指標,虛線箭頭表示random指標。為簡單起見,指向null的指標沒有畫出。

輸入:

返回值:

三步:拷貝單鏈表。在原鍊錶每個結點後面插入乙個與當前節點值相同的結點,例如:1-2-3-4-5拷貝後變成

1-1*-2-2*-3-3*-4-4*-5-5*

拷貝隨機結點。給鍊錶中新生成的結點關聯上隨機結點(如果原結點有的話)

拆分鍊錶。把拷貝後的長鍊錶拆分成兩個鍊錶(一新一舊)

class solution 

cur = head;

while (cur != null)

cur = cur.next.next;

}cur = head.next;

node pre = head, res = head.next;

while (cur.next != null)

pre.next = null;

return res;

}}

有點疑惑,最後一步處理中,為什麼用下面這步不正確呢?

//擷取複製好的新結點

cur = head.next;

node res=cur;

//node res = head.next, pre = head;

while (cur.next != null )

= null;

return res;

JZ25 複雜鍊錶的複製

輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標random指向乙個隨機節點 請對此鍊錶進行深拷貝,並返回拷貝後的頭結點。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 題目有乙個非常狠的限制條件那就是,不能使用引用拷貝。那麼我們就只能自己...

25 複雜鍊錶的複製

題目描述 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 時間限制 1秒 空間限制 32768k 感覺這題目好無聊,自己想到的方法大概是乙...

25 複雜鍊錶的複製

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