複雜鍊錶的資料元素 包括 資料域 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。第...