Copy List with Random Pointer
2015-06-01 00:51
399 查看
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.
Return a deep copy of the list.
/** * 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 == NULL) { return NULL; } RandomListNode *p = head; RandomListNode *newHead = NULL; RandomListNode *q = NULL; //创建新链表的节点,原链表的next指向对应新链表的节点, //对应新链表的节点的next指向原链表对应节点的next. while (p != NULL) { q = new RandomListNode(p->label); q->next = p->next; p->next = q; p = q->next; if (newHead == NULL) { newHead = q; } } p = head; q = newHead; //建立新链表的random while (p != NULL) { if (p->random == NULL) { q->random = NULL; } else { q->random = p->random->next; } p = q->next; if (p != NULL) { q = p->next; } } p = head; q = newHead; //恢复原链表的next,并建立新链表的next. while (p != NULL) { p->next = q->next; p = p->next; if (p != NULL) { q->next = p->next; q = q->next; } } return newHead; } };
相关文章推荐
- 开源代码网站推荐
- Linux安装SmartSVN及破解
- ubuntu install opengrok
- opencv中的各种“矩阵”
- WCF三层架构的建立
- centos7配置环境
- linux下arm驱动开发环境配置
- 俄罗斯云服务器,俄罗斯云主机,独联体外贸电商贸易网站首选影速科技
- tomcat中修改jsessesion的名称
- linux命令总结
- 发布网站 IIS部署网站
- Linux的文件类型和权限操作
- Linux下c程序的编译方法:
- Linux分区机制和常见命令
- Linux下jdk的安装和配置
- CentOS7的yum安装mysql
- OPENCART 2.X 自适应主题模板 ABC-0629
- QT下实现对Linux Shell调用的几种方法
- linux基础
- 搭建OpenWrt开发环境(包括编译过程)