复杂链表的复制(结点包含随机指针)
2015-09-07 13:29
316 查看
题目描述
输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。思路:
1、在原链表上面复制,新节点连到相同的老结点后面;
2、复制随机指针,老结点的随机指针(老结点后面的结点的随机指针指向,老结点随机指针所指节点的下一个结点)
3、将两个链表分离,返回头指针;
代码如下:
RandomListNode* Clone(RandomListNode* pHead){ if(pHead == NULL)return NULL; RandomListNode* currNode = pHead; while(currNode){ RandomListNode* node = new RandomListNode(currNode->label); node->next = currNode->next; currNode->next = node; currNode = node->next; } currNode = pHead; while(currNode){ RandomListNode* node = currNode->next; if(currNode->random){ node->random = currNode->random; } currNode = node->next; } RandomListNode* pHead_Clone = pHead->next; RandomListNode* p; currNode = pHead; while(currNode->next){ p = currNode->next; currNode->next = p->next; currNode = p; } return pHead_Clone; }
相关文章推荐
- sencha 报错问题汇总
- 3.2.5.4 分析黑名单
- 关于硬盘UUID更改及显示的方法
- android模糊效果blur
- ip定位资源收集
- Oracle中获取执行计划的几种方法分析
- 把 MWeb Lite 的文档库文档和数据搬到 MWeb 正式版中
- oc获取相册源码
- hdu 5001
- 网页页面 自动刷新的3种代码
- hdu 5001
- 经典算法:X进制数转换为Y进制数
- JAVA Key=Key模型(一对一双向唯一)
- ACM —— 1002 487-3279
- 客户端关闭连接服务器端没反应
- ChangeKeyBoad Caps ctrl
- Android内核解读-Android系统的开机启动过程
- Nginx的反向代理 和 负载均衡
- 跑马灯 TextView效果设计
- Zlib文件压缩和解压