题目:有一个链表L,其每个节点有2个指针,一个指针next指向链表的下个节点,另一个random随机指向链表中的任一个节点,可能是自己或者为空,写一个程序,要求复制这个链表的结构并分析其复杂性
解决方法一:
O(n)的复杂度,扫面两边即可。
图【1】
图【1】是需要复制的链表
图【2】
如图【2】所示,ABCD是原来的链表,A’B’C’D’是复制的链表,第一遍扫描顺序复制next指针,把ABCD的next分别指向A’B’C’D’,将A’的next指针指向B,B’的next指针指向C,依次类推
复制random指针: A’->random=A->random->next
恢复:A->next=A’->next;A’->next=A’->next->next;