面試題26複雜鍊錶的複製

2021-08-21 03:46:11 字數 711 閱讀 7066

/*** 題目:請複製乙個複雜鍊錶。每個結點除了有乙個next指標指向下乙個結點外,還有乙個sibling指向鍊錶中的任意乙個結點。

* @author 大閒人柴毛毛

* @date 2023年3月16日

*/public

class

copylink

//複製每個結點,並插入原結點之後

nodep = first;

while(p!=

null)

//複製每個結點的sibling域

p = first;

while(p!=

null)

//拆分鍊錶

p = first;

nodeq = p.next;

nodefirst_copy = q;

//被複製鍊錶的頭結點

while(q!=

null)

return first_copy;

}/**

* 綜上所述:上述方法只需掃瞄鍊錶3次:

* 1.第一遍複製每個結點,並依次插入結點的後面;

* 2.第二遍複製每個結點的sibling域;

* 3.第三次拆分鍊錶。

* 因此,上述方式的時間複雜度為o(n)*/}

/*** 複雜鍊錶的乙個結點

*/class

node

面試題26 複雜鍊錶的複製

以下圖為5個結點的複雜鍊錶,實線表示m pnext指標的指向,虛線表示m psibling指標的指向 方法一 分兩步 1 遍歷一遍鍊錶,用m pnext指標將鍊錶連起來,o n 2 確定每個m psibling指標的指向,需重新遍歷新鍊錶確定其m psibling的指向,o n 時間代價為o n 2...

面試題26 複雜鍊錶的複製

1.給定乙個複雜的鍊錶的資料結構,複製這個鍊錶,在這個資料結構中,每個節點有兩個指標,乙個指標指向下乙個結點,另乙個指標指向鍊錶中的任意結點。資料結構 struct complexlistnode 分析 如下圖所示是乙個複雜鍊錶的示意圖,實現標誌指向下一節點的指標,虛線表示指向任意結點的m psib...

面試題 複雜鍊錶複製

lettcode面試題35.複雜鍊錶的複製 請實現 copyrandomlist 函式,複製乙個複雜鍊錶。在複雜鍊錶中,每個節點除了有乙個 next 指標指向下乙個節點,還有乙個 random 指標指向鍊錶中的任意節點或者 null。class node int val node next node...