複雜鍊錶的複製 -- newcoder 劍指offer 25
* 輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向
* 任意乙個節點),返回結果為複製後複雜鍊錶的head。
* (注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空)
* 1、複製原鍊錶的每個節點 a->b->c =>a->a'->b->b'->c->c'
* * 2、a'等 根據a的sibling指向 分別指向正確的位置
* * 3、拆分鍊錶,偶數序號元素拆出來 組成新鍊錶
package com.my.test.codinginterviews.tree;
/** * 題目:
* 複雜鍊錶的複製 -- newcoder 劍指offer 25
* * 題目描述:
* 輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向
* 任意乙個節點),返回結果為複製後複雜鍊錶的head。
* (注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空)
*/public class randomlistnodecopy
@override
public string tostring()
return this.label + "->" + this.next.tostring() +
(this.random == null ? "" : "(" + this.random.label + ")");}}
/*** 思路:
* 1、複製原鍊錶的每個節點 a->b->c =>a->a'->b->b'->c->c'
* * 2、a'等 根據a的random指向 分別指向正確的位置
* * 3、拆分鍊錶,偶數序號元素拆出來 組成新鍊錶
*/public randomlistnode clone(randomlistnode phead)
// 複製next指標
randomlistnode curnode = phead;
while (curnode != null)
// 複製random指標
curnode = phead;
while (curnode != null)
curnode = nextcurnode;
}// 返回偶數序號元素組成的鍊錶
curnode = phead;
randomlistnode newnode = phead.next;
while (curnode != null)
curnode = curnode.next;
}return newnode;
}public static void main(string args)
private static randomlistnode createtestlinkedlist(int n, randomlistnode addnode)
}curnode.next = addnode;
return head;
}}
劍指offer複雜鍊錶複製
題目描述 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 我的 思路比較笨,就是首先構造乙個正常的不大random指標的鍊錶,然後再去遍歷...
劍指offer 複雜鍊錶複製
輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 解題思路 1 複製每個節點,如 複製節點a得到a1,將a1插入節點a後面 2 遍歷鍊錶,a...
劍指offer 複雜鍊錶複製
題目描述 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 非遞迴方法 struct randomlistnode randomlistno...