复杂链表的复制

请事先一个函数ComplexListClone* Clone(ComplexListNode *pHead),
复制一个复杂链表。在复杂链表中，每个节点除了有一个m_pNext指针指向下一个节点外，还有一个m_pSibling指向链表中的任意结点或者NULL。
注意这个问题中复杂的是复制sibling指针所指向的节点。
首先对这个问题进行分解，将他分为建立next结点和建立sibling结点。
方法1，每个节点对原链表和复制后的链表进行遍历，原链表中到达这个节点了，复制后的链表也到达这个节点了，从而得到了这个sibling。

方法2，针对原结点和复制后的结点建立一个哈希表，进行对应，这样就可以利用O(1)的时间找到sibling，而不需要去遍历，时间复杂度也由原来的O(N^2)降到了O(N)，就是有O(N）的空间复杂度。

方法3，降低空间复杂度，将复制的节点连接到原来的节点后面，然后再处理sibling，即为原结点所指sibling的next，然后再将这个大链表分离成两个链表，一个即为原始的，另一个就是复制后的，正好他们是一一间隔的。