劍指offer 35 複雜鍊錶的複製

2021-10-06 18:14:26 字數 1346 閱讀 2389

請實現乙個函式可以複雜複雜鍊錶

在複雜鍊錶中,每乙個節點除了有乙個指標指向下乙個節點,還有乙個額外的指標指向鍊錶中的任意節點或者null

圖中實線箭頭表示next指標,虛線箭頭表示random指標,為了簡答起見指向nullptr的指標沒有畫出

.一般思路複雜原煉表中的每乙個節點,並用next鏈結起來

設定每乙個節點的random指標

.利用雜湊錶用空間換時間

複製原煉表上的每乙個節點 n 建立 n』,並用next鏈結起來,同時我們把 的配對資訊放到雜湊表中;

設定複製鍊錶上的random。如果原始鍊錶中節點 n 的random指向 s ,那麼複製鍊錶中,對應的 n』 應該指向 s』 。

複製原始鍊錶中任意節點 n 並建立 n』 ,再把 n』 鏈結到 n 的後面

設定複製出來的節點的random

把這個長鍊表拆分為兩個鍊錶

思路動畫

/**

* definition for singly-linked list with a random pointer.

* struct listnode

* };

*/class solution

for(auto p = head; p; p = p->next->next) // 設定複製出來節點的random

auto dummy = new listnode(-1);

auto cur = dummy;

auto p = head;

while(p)

return dummy->next;}};

劍指Offer 35 複雜鍊錶的複製

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

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

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

劍指offer35 複雜鍊錶的複製

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