複雜鍊錶的複製

2021-09-25 21:29:35 字數 775 閱讀 3541

題目:請實現函式 complexlistnode clone(complexlistnode phead) ,

複製乙個複雜鍊錶。

在複雜鍊錶中,每個節點除了有乙個m_pnext指標指向下乙個節點,

還有乙個m_psibling指標指向鍊錶中的任意節點或者null。

我們解決該問題還是分為兩步:

• 第一步仍然是複製原始鍊錶上的每個節點n建立n』,然後

把這些建立出來的節點用m_pnext鏈結起來。同時我們把

的配對資訊放到乙個雜湊表中;

• 第二步設定複製鍊錶上每個節點的m_psibling。如果在原

始煉表中節點n的m_psibling指向節點s,那麼在複製鍊錶

中,對應的n』應該指向s』。由於有了雜湊表,我們可以用

o(1)的時間根據s找到s』。

• 該種方法相當於用空間換時間。對於有n個節點的鍊錶,

我們需要乙個大小為o(n)的雜湊表,也就是說我們以 0(n)

的空間消耗把時間複雜度定位到o(n)。

接下來我們再換一種思路,在不用輔助空間的情況下實現

o(n)的時間效率。

第一步: 複製原始鍊錶的任意節點n並建立新節點n』,再把n』鏈結

到n的後面 。

第二步設定複製出來的節點的m_psibling。

第三步把這個長鍊表拆分成兩個鍊錶。

把奇數字置的節點用m_pnext鏈結起來就是原始鍊錶;

把偶數字置的節點用m_pnext鏈結起來就是複製出來的鏈

表。

鍊錶 複雜鍊錶的複製

問題描述 請實現函式complexlistnode clone complexlistnode phead 複製乙個複雜鍊錶。在複雜鍊錶中,每個結點除了有乙個next指標指向下乙個結點之外,還有乙個random指向鍊錶中的任意結點或者null。結點的定義如下 struct randomlistnod...

複雜鍊錶複製

複雜鍊錶複製的標頭檔案mlist.h ifndef mlist h define mlist h include include includetypedef int datatype typedef struct node node,pnode,plist pnode crealist datat...

複製複雜鍊錶

題目 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 解題思路 首先有三種解法 第一種就是中規中矩的解法,首先複製next指標的節點,之後...