複雜鍊錶的複製

2021-10-04 06:27:23 字數 2139 閱讀 8545

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

package dlinkedlist;

/** * @author zhou jian

* @date 2020 $ 2020/3/22 0022 15:22

* 輸入乙個複雜鍊錶

* (每個節點中有節點值,

* 以及兩個指標,乙個指向下乙個節點,

* 另乙個特殊指標指向任意乙個節點),

* 返回結果為複製後複雜鍊錶的head。

* (注意,輸出結果中請不要返回引數中的節點引用,

* 否則判題程式會直接返回空)

*/public

class

problem12

else

//// if(phead==null)

////

// //假如當前節點有下乙個解答

// if(phead.next!=null)

////

//// return head;

// }

/* *解題思路:

*1、遍歷鍊錶,複製每個結點,如複製結點a得到a1,將結點a1插到結點a後面;

*2、重新遍歷鍊錶,複製老結點的隨機指標給新結點,如a1.random = a.random.next;

*3、拆分鍊錶,將鍊錶拆分為原鍊錶和複製後的鍊錶

*/// public randomlistnode clone(randomlistnode phead)

//// randomlistnode currentnode=phead;

//// //1、複製每個節點,如複製節點a到a1,將節點a1插到a後面

// while(currentnode!=null)

//// //2、重新遍歷鍊錶,複製老節點的隨機指標給新節點:如a1.random=a.radom

// currentnode = phead;

// while(currentnode!=null)

// //3、從舊表中拆分新鍊錶

// currentnode=phead;

// //轉殖鍊錶的頭節點

// randomlistnode pclonehead = phead.next;

//// while(currentnode!=null)

//// return pclonehead;

// }

public randomlistnode clone1

(randomlistnode phead)

randomlistnode currentnode = phead;

//1、複製每個結點,如複製結點a得到a1,將結點a1插到結點a後面;

while

(currentnode != null)

currentnode = phead;

//2、重新遍歷鍊錶,複製老結點的隨機指標給新結點,如a1.random = a.random.next;

while

(currentnode != null)

//3、拆分鍊錶,將鍊錶拆分為原鍊錶和複製後的鍊錶

currentnode = phead;

randomlistnode pclonehead = phead.next;

while

(currentnode != null)

return pclonehead;

}public

static

void

main

(string[

] args)

}class

randomlistnode

public

void

list()

}}

鍊錶 複雜鍊錶的複製

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