一種特殊的鍊錶節點類描述如下:
public class node
}public
node copylistwithrand1(node head)
cur=head;
while(cur!=null
)
return
map.get(head);}}
介紹高階做法:
不適用雜湊表來儲存對應關係,只用有限的幾個變數完成所有的功能。
1、首先從左到右遍歷鍊錶,對每個節點cur都複製生成相應的副本節點copy,然後把copy放在cur放在cur和下乙個要遍歷節點的中間
2、再從左到右遍歷鍊錶,在遍歷時設定每乙個副本節點的rand指標
這樣: 每個節點的副本節點都在自己的後乙個,所以此時通過next就可以找到 以這種方式可以設定每乙個副本節點的rand指標
然後將其分離
packagett;public
class
test96
}public
node copylistwidthrand2(node head)
node cur=head;
node next=null
;
while(cur!=null
)
cur=head;
node curcopy = null
;
while(cur!=null
)
node res =head.next;
cur=head;
while(cur!=null
)
return
res;
}}
posted @
2017-09-10 13:56
toov5 閱讀(
...)
編輯收藏
複製含有隨機指標節點的鍊錶
題目要求 請將乙個特殊鍊錶複製乙份,乙個特殊的鍊錶節點結構如下 node類中包含 value 表示節點的值 next 表示下乙個節點 rand 表示隨機指向的任意乙個節點 題目分析 相當於,就是在乙個普通單鏈表的基礎上,每個節點多了乙個可以任意指向的指標,比如 1 2 3,然後1的rand指向3,2...
複製含有隨機節點的鍊錶
輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 由於是深copy,隨機節點指向的物件也應該是新的節點。給出兩種解法 第一種,採用hashm...
複製帶隨機指標的鍊錶
給出乙個鍊錶,每個節點包含乙個額外增加的隨機指標可以指向鍊錶中的任何節點或空的節點。返回乙個深拷貝的鍊錶。public randomlistnode copyrandomlist randomlistnode head hashmapmap new hashmap randomlistnode du...