首页 > 代码库 > [LeetCode]Copy List with Random Pointer复杂链表的复制
[LeetCode]Copy List with Random Pointer复杂链表的复制
/** * Definition for singly-linked list with a random pointer. * 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; RandomListNode *p,*q; p=head; while(p){ q=new RandomListNode(p->label); q->next=p->next; p->next=q; p=q->next; } p=head; while(p){ q=p->next; if(p->random) q->random=p->random->next; p=q->next; } p=head; RandomListNode*head2=p->next; q=head2; while(p){ p->next=q->next; p=p->next; if(p){ q->next=p->next; q=q->next; } } return head2; } };
[LeetCode]Copy List with Random Pointer复杂链表的复制
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。