劍指offer 複雜鍊錶的複製(python)

2021-10-02 17:53:32 字數 1367 閱讀 2307

:# 返回 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...