劍指offer35 複雜鍊錶的複製

2021-09-29 06:25:06 字數 1197 閱讀 4364

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

剛開始看題時還有點摸不著頭腦,感覺這道題沒有任何存在的意義。後來看了大家的討論才明白。

思想:複製後的鍊錶不能利用原來鍊錶的空間,需要申請一塊新的空間,即使是null,也要從新賦乙個新的null

/*

struct randomlistnode

};*/

class

solution

//修改賦值的節點的隨機指標域

p=phead;

while

(p)//將複製後的節點和原節點分開

p=phead;

new_head=p-

>next;

c=new_head;

while

(p)return new_head;}}

;

使用map來實現,將複製節點和原節點繫結

/*

struct randomlistnode

};*/

class

solution

//將複製鍊錶每乙個節點的random指標,指向相應的節點

p=phead;

c=nhead;

while

(p)return nhead;}}

;

二刷

掌握了基本思想,但是在小細節上容易出錯,出錯點在:

程式**現了訪問空指標的next域或者random域。

將複製完的鍊錶斷開後,未將原鍊錶連線上。

/*

struct randomlistnode

};*/

class

solution

//2.複製節點的random域

p = phead;

while

(p)//3.將複製的鍊錶進行斷開

p = phead;

randomlistnode *c_p = p-

>next;

while

(p)return c_p;}}

;

劍指Offer 35 複雜鍊錶的複製

請實現啊函式complexlistnode clone complexlistnode phead 複製乙個 複雜鍊錶。在複雜鍊錶中除了有乙個m pnext指標指向下乙個節點,還有乙個m psaibling 指標指向鍊錶中的任意節點或者nullptr。節點定義如下 class complexlist...

(劍指offer)35 複雜鍊錶的複製

輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 思路 1.先複製鍊錶節點的值放在原來的節點後面,組成乙個新的鍊錶 2.處理複雜指標 安排複...

劍指offer 35 複雜鍊錶的複製

面試題35.複雜鍊錶的複製 難度中等33 請實現 copyrandomlist 函式,複製乙個複雜鍊錶。在複雜鍊錶中,每個節點除了有乙個 next 指標指向下乙個節點,還有乙個 random 指標指向鍊錶中的任意節點或者 null。示例 1 輸入 head 7,null 13,0 11,4 10,2...