一个链表问题:复制带随机指针的链表

来源:互联网 发布:手机淘宝退货怎么退啊 编辑:程序博客网 时间:2024/05/14 15:34

题目:有一个链表L,其每个节点有2个指针,一个指针next指向链表的下个节点,另一个random随机指向链表中的任一个节点,可能是自己或者为空,写一个程序,要求复制这个链表的结构并分析其复杂性

 

解决方法一:

O(n)的复杂度,扫面两边即可。

                                                                 图【1】
图【1】是需要复制的链表


                                                              图【2】

如图【2】所示,ABCD是原来的链表,A’B’C’D’是复制的链表,第一遍扫描顺序复制next指针,把ABCDnext分别指向A’B’C’D’,将A’next指针指向BB’next指针指向C,依次类推

复制random指针: A’->random=A->random->next

恢复:A->next=A’->next;A’->next=A’->next->next;

 

 

原创粉丝点击