複雜鍊錶的複製

2022-03-30 23:14:02 字數 954 閱讀 5774

題目:有乙個複雜鍊錶,其結點除了有乙個m_pnext指標指向下乙個結點外,

還有乙個m_psibling指向鍊錶中的任一結點或者null。其結點的c++定義如下:

struct complexnode

;                       

請完成函式complexnode* clone(complexnode* phead),以複製乙個複雜鍊錶。

思路: 一般複製乙個簡單鍊錶就這麼遍歷一遍就好了,這個複雜鍊錶,比簡單鍊錶多的地方就在於多了乙個sibling的指標,也就是說在建立完簡單鍊錶之後,如何在新的鍊錶中找到sibling對應的位址。我們已知的是舊的節點的位址,所以只需要用乙個map,儲存每乙個節點舊的節點對應的新的節點的位址即可。

第一次遍歷,建立簡單節點,第二次遍歷,對於舊煉表中的每乙個節點的sibling指標位址,從map中找到新煉表中對應節點的位址,連線上就好了。

**如下:

#include "

stdafx.h

"#include

#include

using

namespace

std;

struct

complexnode

;

complexnode* clone(complexnode*phead)

//根據map中儲存的資料,找到對應的節點

p =phead;

tail =newhead;

while(p!=null)

p = p->pnext;

tail = tail->pnext;

}return

newhead; }

void deletelist(complexnode*phead)

}int

main()

結果,我用斷點看了一下,是正確的。

鍊錶 複雜鍊錶的複製

問題描述 請實現函式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指標的節點,之後...