数据流补全脚本
2015-11-30 09:46
246 查看
复杂链表
在复杂链表中除了有一个_next域指向下一个结点之外,还有一个_Snext域指向链表中任意一个位置或者NULL
分析:A->B->C->D->E链表
将每个结点后克隆一个结点
分离
这样,就完成了复杂链表的复制
本文出自 “无以伦比的暖阳” 博客,请务必保留此出处http://10797127.blog.51cto.com/10787127/1764101
在复杂链表中除了有一个_next域指向下一个结点之外,还有一个_Snext域指向链表中任意一个位置或者NULL
分析:A->B->C->D->E链表
将每个结点后克隆一个结点
分离
struct ComplexNode { int _data; ComplexNode* _next; ComplexNode* _Snext; }; //把克隆的结点放到原结点后面 void CloneNodes(ComplexNode* pHead) { ComplexNode* pNode = pHead; while (pNode != NULL) { ComplexNode* pCloneNode=new ComplexNode();//创建一个克隆的结点 pCloneNode->_data = pNode->_data;//得到原结点的值 pCloneNode->_next = pNode->_next;//用克隆的结点保存原结点的指向 pCloneNode->_Snext = NULL;//把克隆结点的随意的指针赋空 pNode->_next = pCloneNode;//把克隆的结点放到原结点的后面 pNode = pCloneNode->_next;//循环 } } //复制链表上的_Snext void ConnectSNodes(ComplexNode*pHead) { ComplexNode*pNode = pHead; while (pNode != NULL)//当结点不为空时进行结点的复制 { ComplexNode* pCloneNode = pNode->_next;//指针指向结点的下一个(即克隆的结点) if (pNode->_Snext != NULL)//当pNode的_Snext不为空将克隆结点的_Snext指向pNode的_Snext的下一个(即克隆结点指向克隆结点) { pCloneNode->_Snext = pNode->_Snext->_next; } pNode = pCloneNode->_next;//循环 } } //拆分链表,奇数即原链表,偶数即克隆链表 ComplexNode*ReconnectNodes(ComplexNode*pHead) { ComplexNode*pNode = pHead; ComplexNode*pCloneNode = NULL; ComplexNode*pCloneHead = NULL; if (pNode != NULL) { pCloneNode = pCloneHead = pNode->_next;//得到克隆链表的头结点 pNode->_next = pCloneNode->_next;//分离 pNode = pNode->_next;//指向原头结点的下一个原结点 } while (pNode!=NULL)//分离 { pCloneNode->_next = pNode->_next; pCloneNode = pCloneNode->_next; pNode->_next = pCloneNode->_next; pNode = pNode->_next; } return pCloneHead; } ComplexNode*Clone(ComplexNode*pHead)//复杂链表的复制 { CloneNodes(pHead); ConnectSNodes(pHead); return ReconnectNodes(pHead); }
这样,就完成了复杂链表的复制
本文出自 “无以伦比的暖阳” 博客,请务必保留此出处http://10797127.blog.51cto.com/10787127/1764101
相关文章推荐
- 我的参考
- oracle命令之oracle用户
- 【java基础】Java邮件开发
- gitbook使用手册
- PAT练习基础编程题目之求自定类型元素的平均
- Android setOnTouchListener识别滑动手势
- EBS R12.2应用层关闭脚本的执行过程
- 平行分类账的数据写入CO
- iframe顶部跳转跨域问题
- 仿微信头像图片裁剪并压缩到100K以下到本地
- Android Service常驻后台 守护程序
- history.back();history.go(-1);触发操作后无效解决方案
- 【java基础Java邮件开发(基本概念介绍 )
- linux系统约定不同类型文件默认的颜色
- oracle11.2.0.4-active datagurd安装配置全过程实战
- 视觉感知特性【2】一些视觉感知因子
- (九) Nepxion-Thunder分布式RPC集成框架 - 治理中心
- 1009. 说反话 (20)
- Unable to load configuration解决方案
- Android支付宝集成