題目描述
輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點),返回結果為複製後複雜鍊錶的head。(注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空)
# -*- coding:utf-8 -*-
# class randomlistnode:
# def __init__(self, x):
# self.label = x
# self.next = none
# self.random = none
class
solution
:# 返回 randomlistnode
defclone
(self, phead)
:# write code here
ifnot phead:
return
none
# 1、新建節點
ptemp = phead
while ptemp:
newnode = randomlistnode(ptemp.label)
newnode.
next
= ptemp.
next
ptemp.
next
= newnode
ptemp = newnode.
next
# 2、連線random
ptemp = phead
while ptemp:
if ptemp.random:
ptemp.
next
.random = ptemp.random.
next
ptemp = ptemp.
next
.next
# 3、斷開鍊錶
ptemp = phead
ret = ptemp.
next
rettemp = ret
while ptemp and rettemp:
ptemp.
next
= rettemp.
next
if ptemp.
next
: ptemp = ptemp.
next
rettemp.
next
= ptemp.
next
rettemp = ptemp.
next
return ret
複雜鍊錶的深拷貝
題目描述 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標random指向乙個隨機節點 請對此鍊錶進行深拷貝,並返回拷貝後的頭結點。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 看完題目應該很混亂,甚至還有點看不懂。題目解析 看上面的,題...
練習26 複雜鍊錶拷貝
題目 請實現函式complexlistnode clone complextlistnode phead 複製乙個複雜鍊錶。在複雜鍊錶中,每個結點除了有乙個pnext指標指向下乙個結點外,還有乙個psibling指向鍊錶的任意結點或者null。結點的c 定義如下 template struct co...
複雜鍊錶的複製(深拷貝)
給定乙個鍊錶,每個結點包含乙個額外增加的隨機指標,該指標可以指向鍊錶中任何結點或者空結點,要求返回這個鍊錶的深拷貝。思路分析 1.破壞需要複製的複雜鍊錶,將新老節點串成乙個單鏈表的形式 2.解決random的指向問題 重要 cur.next.random cur.random.next 3.完成上述...