题目:
请实现函数ComplexListNode* Clone(ComplexListNode * pHead),复制一个复杂链表。在复杂链表中,每个结点除了有一个m_pNext指针指向下一个结点外,还有一个m_pSibling指向链表中的任意结点或者NULL。结点的C++定义如下:
struct ComplexListNode{
int m_nValue;
ComplexListNode* m_pNext;
ComplexListNode* m_pSibling;
};
上图是一个含有5个结点的复杂链表。图中实线箭头表示m_pNext指针,虚线箭头表示m_pSibling指针。为了简单起见,指向NULL的指针没有画出。
public class ComplexListNode {
public int m_nValue;
ComplexListNode m_pNext;
ComplexListNode m_pSibling;
public ComplexListNode() {
}
public ComplexListNode(int m_nValue) {
super();
this.m_nValue = m_nValue;
}
}
第一思路:
把复杂链表的复制分为两步:第一步是复制原始链表上的每一个结点,并用m_pNext连接起来;第二步是设置m_pSiblin