劍指offer 35 複雜鍊錶的複製 C

2021-10-06 04:47:36 字數 870 閱讀 3885

題目描述

輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標random指向乙個隨機節點),請對此鍊錶進行深拷貝,並返回拷貝後的頭結點。(注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空)

思路1:

1、遍歷鍊錶,複製每個結點,如複製結點a得到a1,將結點a1插到結點a後面;

2、重新遍歷鍊錶,複製老結點的隨機指標給新結點

3、拆分鍊錶,將鍊錶拆分為原鍊錶和複製後的鍊錶

/*

struct randomlistnode

};*/

class

solution

//2、重新遍歷鍊錶,複製老結點的隨機指標給新結點

node = phead;

while

(node!=

nullptr

)//3、拆分鍊錶,將鍊錶拆分為原鍊錶和複製後的鍊錶

node = phead;

randomlistnode* clonehead=node-

>next;

while

(node!=

nullptr

)return clonehead;}}

;

class

solution

//根據hashmap中儲存的值,找到對應的節點

for(randomlistnode* p = phead; p !=

nullptr

; p = p-

>next)

return hash_map[phead];}

};

劍指Offer 35 複雜鍊錶的複製

請實現啊函式complexlistnode clone complexlistnode phead 複製乙個 複雜鍊錶。在複雜鍊錶中除了有乙個m pnext指標指向下乙個節點,還有乙個m psaibling 指標指向鍊錶中的任意節點或者nullptr。節點定義如下 class complexlist...

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

輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 思路 1.先複製鍊錶節點的值放在原來的節點後面,組成乙個新的鍊錶 2.處理複雜指標 安排複...

劍指offer35 複雜鍊錶的複製

輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 剛開始看題時還有點摸不著頭腦,感覺這道題沒有任何存在的意義。後來看了大家的討論才明白。思想...