輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點)。
返回乙個該鍊錶的深度拷貝。
1、遍歷該鍊錶,複製每乙個節點,插入到當前節點的後面.形成如下鍊錶.
1->1'->2->2'....
2、將每個拷貝節點的隨機指標域,指向原節點(即拷貝節點的上乙個節點)的隨即指標域指向(注意隨機指標域可能為空)的下乙個節點.即1的隨機指標域指向3,則1'的隨機指標域指向3的下乙個指標3'.
3、拆分鍊錶,返回1'->2'->3'...
publicclass
randomlistnode
}
publicclass
solution
//second round: assign random pointers for the copy nodes
runner=phead;
while(runner!=null
)
//third round: restore the original list, and extract the copy list.
runner=phead;
phead=runner.next;
while(true
)
else
}return
phead;
}}
鍊錶 深度拷貝乙個帶有隨機指標的鍊錶
本文介紹兩種解法。解法1 利用乙個map listnode copyrandomlist listnode head 第二次迴圈把新節點的random指標賦值 tmpnode head while tmpnode null else tmpnode tmpnode next return newhe...
建立乙個鍊錶
不知道為什麼總是忘了對鍊錶的操作,主要就是平時用的少,希望自己通過寫這編文章能加深對鍊錶操作的印象 目錄1.首先得要有兩個基本的標頭檔案 2.再然後得要有個結構體 3.這部分是函式前置宣告 4.鍊錶初始化 5.插入節點 6.列印整個鍊錶 7.釋放整個鍊錶的記憶體 8.整個程式示例 9.列印結果 in...
反轉乙個鍊錶
反轉乙個單鏈表 題目源於領扣 示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 高階 你可以迭代或遞迴地反轉鍊錶。你能否用兩種方法解決這道題 題目分析 因為乙個單個鍊錶結點有前驅和後繼,所以我們不能像順序表那樣直接交換元素。我們需要三個指標prev,cur,next來完整...