劍指Offer 面試題35 複雜鍊錶的複製

2021-10-03 02:13:55 字數 1221 閱讀 4405

面試題35:複雜鍊錶的複製

題目:請實現函式complexlistnode* clone(complexlistnode* phead),複製乙個複雜鍊錶。在複雜鍊錶中,每個結點除了有乙個m_pnext指標指向下乙個結點外,還有乙個m_psibling 指向鍊錶中的任意結點或者nullptr。

解決方案:

第二步:如果原始鍊錶上的節點n的 sibling 指向s,則對應的複製節點n』的 sibling 指向s的複製節點s』。

第三步:把第二步得到的鍊錶拆分成兩個鍊錶,奇數字置上的節點組成原始鍊錶,偶數字置上的節點組成複製出來的鍊錶。

;// 1、複製原始鍊錶的任意節點n並建立新節點n',再把n'鏈結到n的後面。

void

clonenodes

(complexlistnode* phead)

}// 2、如果原始鍊錶上的節點n的 sibling 指向s,則對應的複製節點n'的 sibling 指向s的複製節點s'。

void

connectsiblingnodes

(complexlistnode* phead)

pnode=pcloned-

>next;}}

// 3、 把第二步得到的鍊錶拆分成兩個鍊錶,奇數字置上的節點組成原始鍊錶,偶數字置上的節點組成複製出來的鍊錶。

complexlistnode*

reconnectnodes

(complexlistnode* phead)

while

(pnode!=

null

)return pclonedhead;

} complexlistnode*

clone

(complexlistnode* phead)

intmain()

複雜鍊錶的複製 劍指offer 面試題35

輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 本題是對複雜鍊錶的複製,這裡實現的方法時間複雜度是o n 並且沒有開闢額外的空間 1 首先...

劍指offer 面試題35 複雜鍊錶的複製

複製乙個複雜鍊錶。在複雜鍊錶中,每個節點除了有乙個next指向下乙個節點外,還有乙個sbiling指向鍊錶中的任意節點或者null。class node 第一步 根據原始鍊錶的每個結點n建立對應的n 並把n 連在n的後面 第二步 b sbiling就記錄在了b.sbiling.next 第三部 奇偶...

劍指offer 面試題35 複雜鍊錶的複製

輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 class solution private void copynode randomli...