1.三步法
while(curNode){if(curNode->random)curNode->next->random = curNode->random->next;curNode = curNode->next->next;}
if(curNode0->random) 这个判断不加会报错
RandomListNode* Clone(RandomListNode* pHead){if(!pHead)return NULL;RandomListNode* curNode = pHead;//在每个节点后插入复制的节点,random指针还未修改while(curNode){RandomListNode* node = new RandomListNode(curNode->label);node->next = curNode->next;curNode->next = node;curNode = node->next;}curNode = pHead;//修改random指针while(curNode){if(curNode->random)curNode->next->random = curNode->random->next;curNode = curNode->next->next;}RandomListNode* pCloneHead = pHead->next;RandomListNode *tmp;curNode = pHead;//拆分while(curNode->next){tmp = curNode->next;curNode->next = curNode->next->next;curNode = tmp;}return pCloneHead;}
2.哈希表法
