问题描述:给一个单链表,每一个节点额外包含增加的随机指针,该指针可以指向链表中任意的节点或空节点。现在需要将随机指针的状态复制下来。
思路:
第一步:为了不改变原链表的结构,可以在每一个原节点后面新增加一个拷贝。
(copy->next=cur->next,cur->next=copy(尾插))
同时,为了方便下一次插入,每次复制完成之后,将cur指针向后移动两位到达下一个原节点处 。(cur=copy->next)
第二步:做好基础准备后,可以开始进行随机指针的复制了。由于每一个节点的后一个都是其复制,所以随机指针的情况也是这样。(copy->random=cur->random->next)其中cur->random是原节点的下一个随机节点,加上next则是其复制,按照上面的拷贝思想,其正好对应原节点的复制的随机节点。(当然,当原节点的随机指针为空时,其复制节点理所应当的也为空
(copy->random=NULL))
第三步:创建一个新单链表&#x