複雜鍊錶的拷貝

2021-10-05 06:57:51 字數 1321 閱讀 1334

題目描述

輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點),返回結果為複製後複雜鍊錶的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.完成上述...