Copy List with Random Pointer

来源:互联网 发布:linux系统网络配置文件 编辑:程序博客网 时间:2024/06/05 09:47
------Question------

A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.

Return a deep copy of the list.

------Solution------

struct RandomListNode {     int label;     RandomListNode *next, *random;     RandomListNode(int x) : label(x), next(NULL), random(NULL) {} };class Solution {public:    RandomListNode *copyRandomList(RandomListNode *head) {        if(!head) return NULL;        map<RandomListNode *, RandomListNode *> flag;        RandomListNode *root = copyNode(head, flag);        return root;    }    RandomListNode * copyNode(RandomListNode *source, map<RandomListNode *, RandomListNode *> &flag)    {        if(flag.find(source)!=flag.end())         {            return flag[source];        }              RandomListNode *target = new RandomListNode (source->label);        flag[source]=target;        if(source->next)            target->next = copyNode (source->next,flag);        if(source->random)            target->random = copyNode (source->random,flag);        return target;    }};


0 0
原创粉丝点击