隨機指標鍊錶深拷貝

2021-10-05 22:14:40 字數 851 閱讀 5622

題目描述

給定乙個鍊錶,每個節點包含乙個額外增加的隨機指標,該指標可以指向鍊錶中的任何節點或空節點。 要求返回這個鍊錶的 深拷貝。

我們用乙個由 n 個節點組成的鍊錶來表示輸入/輸出中的鍊錶。每個節點用乙個 [val, random_index] 表示:

val:乙個表示 node.val 的整數。

random_index:隨機指標指向的節點索引(範圍從 0 到 n-1);如果不指向任何節點,則為 null 。

考點
1.淺拷貝: 將原物件或原陣列的引用直接賦給新物件,新陣列,新物件/陣列只是原物件的乙個引用

2.深拷貝: 建立乙個新的物件和陣列,將原物件的各項屬性的「值」(陣列的所有元素)拷貝過來,是「值」而不是「引用」

題解
步驟:

1.在原鍊錶每個節點後面插入乙個值相等的新節點

2.給新節點的隨即指標域賦值

3.將新節點從原煉表中拆下來

**
public class random_list 

mapmap = new hashmap<>();

node node = head;

while (node != null)

node = head;

//給新節點的next和隨即指標域賦值

while (node!= null)

return map.get(head);

/*return headnew;*/

}public static void main(string args)

}class node

}

複雜鍊錶的深拷貝

題目描述 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標random指向乙個隨機節點 請對此鍊錶進行深拷貝,並返回拷貝後的頭結點。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 看完題目應該很混亂,甚至還有點看不懂。題目解析 看上面的,題...

鍊錶 深度拷貝乙個帶有隨機指標的鍊錶

本文介紹兩種解法。解法1 利用乙個map listnode copyrandomlist listnode head 第二次迴圈把新節點的random指標賦值 tmpnode head while tmpnode null else tmpnode tmpnode next return newhe...

複雜鍊錶的複製(深拷貝)

給定乙個鍊錶,每個結點包含乙個額外增加的隨機指標,該指標可以指向鍊錶中任何結點或者空結點,要求返回這個鍊錶的深拷貝。思路分析 1.破壞需要複製的複雜鍊錶,將新老節點串成乙個單鏈表的形式 2.解決random的指向問題 重要 cur.next.random cur.random.next 3.完成上述...