博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer---复杂链表的复制
阅读量:6181 次
发布时间:2019-06-21

本文共 1894 字,大约阅读时间需要 6 分钟。

/*struct RandomListNode {    int label;    struct RandomListNode *next, *random;    RandomListNode(int x) :            label(x), next(NULL), random(NULL) {    }};*/class Solution {public:    //复制原始链表的任一节点N并创建新节点N',再把N'链接到N的后边    void CloneNodes(RandomListNode* pHead)    {        RandomListNode* pNode=pHead;        while(pNode!=NULL)        {            RandomListNode* pCloned=new RandomListNode(0);            pCloned->label=pNode->label;            pCloned->next=pNode->next;            pCloned->random=NULL;                          pNode->next=pCloned;                          pNode=pCloned->next;        }    }    //如果原始链表上的节点N的random指向S,则对应的复制节点N'的random指向S的下一个节点S'    void ConnectRandomNodes(RandomListNode* pHead)    {        RandomListNode* pNode=pHead;        while(pNode!=NULL)        {            RandomListNode* pCloned=pNode->next;            if(pNode->random!=NULL)                pCloned->random=pNode->random->next;            pNode=pCloned->next;        }    }    //把得到的链表拆成两个链表,奇数位置上的结点组成原始链表,偶数位置上的结点组成复制出来的链表    RandomListNode* ReConnectNodes(RandomListNode* pHead)    {        RandomListNode* pNode=pHead;        RandomListNode* pClonedHead=NULL;        RandomListNode* pClonedNode=NULL;                  //初始化        if(pNode!=NULL)        {            pClonedHead=pClonedNode=pNode->next;            pNode->next=pClonedNode->next;            pNode=pNode->next;                      }        //循环        while(pNode!=NULL)        {            pClonedNode->next=pNode->next;            pClonedNode=pClonedNode->next;            pNode->next=pClonedNode->next;            pNode=pNode->next;        }                  return pClonedHead;              }    //三步合一    RandomListNode* Clone(RandomListNode* pHead)    {        CloneNodes(pHead);        ConnectRandomNodes(pHead);        return ReConnectNodes(pHead);    }};

 

转载于:https://www.cnblogs.com/159269lzm/p/7291887.html

你可能感兴趣的文章
scrapy爬虫初步尝试
查看>>
陈松松:视频制作不出来,跟这7个思维有九成关系
查看>>
形参和实参有何区别
查看>>
我的友情链接
查看>>
MySQL表结构的导入和导出MySQL表结构的导入和导出
查看>>
JavaSE 学习参考:Map容器遍历
查看>>
salt模块命令
查看>>
基于TBDS的flume异常问题排查过程
查看>>
2017/5 JavaScript基础7--- 数组
查看>>
网络时常断网的解决办法
查看>>
第八次作业及答案
查看>>
linux 日志定时清理脚本
查看>>
java老司机面试题
查看>>
Guice AOP
查看>>
懒汉式单例
查看>>
java递归组装树形结构
查看>>
手把手教你自己写一个模糊搜索的下拉框
查看>>
.Net文档图像处理工具包GdPicture.NET发布v14.0.30,改进PDF/OCR生成速度
查看>>
NetBSD 8.1 RC1 发布
查看>>
12个必备的JavaScript装逼技巧
查看>>