【剑指offer-解题系列(25)】复杂链表的复制
来源:互联网 发布:农村淘宝襄县招聘信息 编辑:程序博客网 时间:2024/06/06 11:40
题目描述
输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)
分析
一种是使用哈希表记录节点的下一个
一种首先进行复制,然后分拆
代码实现
RandomListNode* Clone(RandomListNode* pHead)
{
if(pHead==NULL)
return NULL;
///copy
RandomListNode* p = pHead;
RandomListNode* p_copy = NULL;
while(p!=NULL){
RandomListNode* p_next =p->next;
///build a new p
p_copy = new RandomListNode(p->label);
//link after p
p->next = p_copy;
p_copy->next = p_next;
p=p_next;
}
///copy random link
p = pHead;
while(p!=NULL){
p_copy =p->next;
if(p->random!=NULL){
p_copy->random = p->random->next;
}
p=p_copy->next;
}
///break
p = pHead;
p_copy = p->next;
RandomListNode*newHead = p->next;
while(p){
p->next = p_copy->next;
p=p->next;
if(p){
p_copy->next=p->next;
p_copy=p_copy->next;
}
}
/////////////////////破坏了原来的指针
/*
while(p_copy->next!=NULL){
p->next = p_copy->next;
p=p->next;
p_copy->next=p->next;
p_copy=p_copy->next;
}
*/
return newHead;
}
{
if(pHead==NULL)
return NULL;
///copy
RandomListNode* p = pHead;
RandomListNode* p_copy = NULL;
while(p!=NULL){
RandomListNode* p_next =p->next;
///build a new p
p_copy = new RandomListNode(p->label);
//link after p
p->next = p_copy;
p_copy->next = p_next;
p=p_next;
}
///copy random link
p = pHead;
while(p!=NULL){
p_copy =p->next;
if(p->random!=NULL){
p_copy->random = p->random->next;
}
p=p_copy->next;
}
///break
p = pHead;
p_copy = p->next;
RandomListNode*newHead = p->next;
while(p){
p->next = p_copy->next;
p=p->next;
if(p){
p_copy->next=p->next;
p_copy=p_copy->next;
}
}
/////////////////////破坏了原来的指针
/*
while(p_copy->next!=NULL){
p->next = p_copy->next;
p=p->next;
p_copy->next=p->next;
p_copy=p_copy->next;
}
*/
return newHead;
}
阅读全文
0 0
- 【剑指offer-解题系列(25)】复杂链表的复制
- 剑指offer系列源码-复杂链表的复制
- 【剑指offer系列】 复杂链表的复制___26
- 剑指offer系列之24:复杂链表的复制
- 剑指offer系列-T26复杂链表的复制
- 【剑指offer】复杂链表的复制
- 剑指offer--复杂链表的复制
- 《剑指offer》复杂链表的复制
- 剑指offer:复杂链表的复制
- 剑指offer - 复杂链表的复制
- 剑指Offer--复杂链表的复制
- 剑指offer:复杂链表的复制
- 【剑指offer】复杂链表的复制
- 剑指offer-复杂链表的复制
- 剑指offer:复杂链表的复制
- 剑指offer:复杂链表的复制
- [剑指offer]复杂链表的复制
- 【剑指offer】复杂链表的复制
- BZOJ3437 小P的牧场 斜率优化
- java基础篇(四)——C中struct和java中class
- hashcode方法
- java内存泄漏
- struts2第三讲笔记,登录界面实例,以.action结尾
- 【剑指offer-解题系列(25)】复杂链表的复制
- 儿童节搞笑祝福语短信
- servlet中属性和参数区别
- 出主意:阻止了对方倒苦水(错误行为)
- Linux札记
- 关于const对象定义在头文件中
- 2017年的端午节祝福语
- 谷歌VR/AR业务副总裁:Daydream是关键步骤,要解决设备摩擦问题
- Prometheus 监控Rabbitmq