劍指刷題 複製乙個複雜鍊錶

2021-09-25 22:33:53 字數 562 閱讀 2622

複雜鍊錶的資料元素 包括  資料域  next域  乙個隨機域,隨機也是指向這個鍊錶中的任乙個結點。

解題思路是:從頭到尾 遍歷的同時 複製鍊錶結點,在複製鍊錶結點的時候 只能 暫時根據原鍊錶複製出 資料域 和next指標域,隨機指向的結點,不一定已經複製出新結點。  所以在這個同時  將 原鍊錶每個結點的位址(使用陣列arr1),以及新鍊錶每個結點的位址(使用陣列arr2) 儲存下來,等到 全部結點複製出來,第二次遍歷, 根據結點->random指向的結點 位於 arr1中的第幾個位置來判斷 指向了第幾個結點。,然後讓新鍊錶的此結點也指向新煉表中的第幾個結點。

#include class solution 

vector::iterator it_begin = addr.begin();

vector::iterator it_cur;

for (p = phead, q = new_head; p != null;)

return new_head;

} vectoraddr;

vectornew_addr;

};

劍指刷題之複雜鍊錶複製

題目要求 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 題目分析採用分治法解決該問題。一共分三步 第一步,複製鍊錶,插入的節點rando...

劍指Offer 刷題 複雜鍊錶的複製

public class randomlistnode public class solution randomlistnode currentnode phead 1 遍歷鍊錶,複製每個結點,如複製結點a得到a1,將結點a1插到結點a後面 while currentnode null curren...

劍指Offer刷題 複雜鍊錶的複製(35)

請實現 copyrandomlist 函式,複製乙個複雜鍊錶。在複雜鍊錶中,每個節點除了有乙個 next 指標指向下乙個節點,還有乙個 random 指標指向鍊錶中的任意節點或者 null。雜湊node和index,比較愚蠢。主要思路是兩次遍歷鍊錶,用乙個map儲存每乙個結點指標對應的index。第...