:# 返回 randomlistnode
defclone
(self, phead)
:# write code here
""" if not phead:
return none
newnode=randomlistnode(phead.label)
newnode.random=phead.random
newnode.next=self.clone(phead.next)
return newnode
"""ifnot phead:
return
none
cur=phead
#在原煉表中插入乙個與前面元素相同的node
""" 1、複製每個節點,如:複製節點a得到a1,將a1插入節點a後面
2、遍歷鍊錶,a1->random = a->random->next;
3、將鍊錶拆分成原鍊錶和複製後的鍊錶
"""while cur:
tmp = randomlistnode(cur.label)
tmp.
next
= cur.
next
cur.
next
= tmp
cur = tmp.
next
cur = phead
while cur:
tmp=cur.
next
if cur.random:
tmp.random=cur.random.
next
cur=tmp.
next
cur=phead
res=phead.
next
while cur.
next
: tmp=cur.
next
cur.
next
=tmp.
next
cur=tmp
return res
劍指offer複雜鍊錶複製
題目描述 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 我的 思路比較笨,就是首先構造乙個正常的不大random指標的鍊錶,然後再去遍歷...
劍指offer 複雜鍊錶複製
輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 解題思路 1 複製每個節點,如 複製節點a得到a1,將a1插入節點a後面 2 遍歷鍊錶,a...
劍指offer 複雜鍊錶複製
題目描述 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 非遞迴方法 struct randomlistnode randomlistno...