代码改变世界

Copying Linked Lists with Random Pointers

2013-09-16 19:43  muzinian  阅读(227)  评论(0编辑  收藏  举报

Copying Linked Lists with Random Pointers 

Linked list with random pointers to other nodes in the list.

两个方法:
方法一:

1.不考虑随机指针的情况下复制链表;

2.在复制过程中建立一个以原链表节点地址为key,相应的复制链表节点地址为value的hash;

3.遍历原链表和新链表,得到原链表随机指针值,并复制给新链表。

方法二:

1.忽略随机指针值复制链表第n个节点并插入到第n个节点与第n+1个节点之间,以此为方式修改链表直到链表尾。

2.利用链表节点next指针指向节点的的拷贝这一已知,使用如下语句:

1 srcCurrent->next->random = srcCurrent->random->next;

Original linked list, but with the copy nodes inserted and random pointers assigned.

3.分开链表

srcCurrent->next = srcCurrent->next->next;
cpyCurrent->next = cpyCurrent->next->next;