26. 复杂链表的复制
题目:
请实现函数ComplexListNode* Clone(ComplexListNode* pHead);复制一个复杂链表。在复杂链表中,每个节点除了有一个m_pNext指针指向下一个节点外,还有一个m_pSibling指向链表中的任意节点或者NULL。节点的C++定义如下:
struct ComplexListNode
{int m_nValue;ComplexListNode* m_pNext;ComplexListNode* m_pSibling;
};
实现代码:
void CloneNodes(ComplexListNode* pHead)
{ComplexListNode* pNode = pHead;while (pNode != nullptr){ComplexListNode* pClone = new ComplexListNode();pClone->m_nValue = pNode->m_nValue;pClone->m_pNext = pNode->m_pNext;pClone->m_pSibling = nullptr;pNode->m_pNext = pClone;pNode = pClone->m_pNext;}
}void ConnectSiblingNodes(ComplexListNode* pHead)
{ComplexListNode* pNode = pHead;while (pNode != nullptr){ComplexListNode* pClone = pNode->m_pNext;if (pNode->m_pSibling != nullptr) pClone->m_pSibling = pNode->m_pSibling->m_pNext;pNode = pClone->m_pNext;}
}ComplexListNode* ReconnectNodes(ComplexListNode* pHead)
{ComplexListNode* pNode = pHead;ComplexListNode* pCloneNode = pNode->m_pNext;ComplexListNode* pCloneHead = pCloneNode; // 克隆链表的头节点pNode->m_pNext = pCloneNode->m_pNext;pNode = pNode->m_pNext;while (pNode != nullptr){pCloneNode->m_pNext = pNode->m_pNext;pCloneNode = pCloneHead->m_pNext;pNode->m_pNext = pCloneNode->m_pNext;pNode = pNode->m_pNext;}return pCloneHead;
}ComplexListNode* Clone(ComplexListNode* pHead)
{if (nullptr == pHead) return nullptr;CloneNodes(pHead);ConnectSiblingNodes(pHead);return ReconnectNodes(pHead);
}
26. 复杂链表的复制相关推荐
- 【剑指offer-Java版】26复杂链表的复制
复杂链表复制: 一种思路是通过哈希表存放sibling的配对信息 – 没看明白 一种思路是直接在原始链表中复制,然后拆分 – 属于时间和空间效率都比较高的方式 分三步,还是比较好懂的 public c ...
- 算法题26 复杂链表的复制
题目 请实现函数 ComplexListNode clone(ComplexListNode head),复制一个复杂链表.在复杂链表中,每个结点除了有一个 next 域指向下一个结点外,还有一个 s ...
- 剑指offer面试题[26]-复杂链表的复制
题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回参数中的节点引用,否 ...
- [剑指offer]面试题26:复杂链表的复制
面试题26:复杂链表的复制 题目:请实现函数ComplexListNodeClone(ComplexListNodepHead),复制一个复杂链表.在复杂链表中,每个结点除了有一个m_pNext指针指 ...
- 剑指offer——面试题26:复杂链表的复制
剑指offer--面试题26:复杂链表的复制 Solution1: 小套路记住就行!!! 根据书上复杂度为O(n)O(n)O(n)的算法写的,此题加深了对于链表指针的理解与应用! /* struct ...
- 剑指offer 26:复杂链表的复制
复杂链表的复制 题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回参数 ...
- 剑指offer:面试题35. 复杂链表的复制
题目:复杂链表的复制 请实现 copyRandomList 函数,复制一个复杂链表.在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 ...
- 剑指Offer面试题:24.复杂链表的复制
一.题目:复杂链表的复制 题目:请实现函数ComplexListNode Clone(ComplexListNode head),复制一个复杂链表.在复杂链表中,每个结点除了有一个Next指针指向下一 ...
- python 带随机指针的链表深度复制_LeetCode:复制带随机指针的链表
请实现 copyRandomList 函数,复制一个复杂链表.在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null. 思路: ...
- hashmap 复制_复杂链表的复制
题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制链表的head.(注意,输出结果中请不要返回参数中的节点引用,否则判断 ...
最新文章
- Linux Crontab 定时任务 命令详解
- HDU3657Game(最大流)
- Object C学习笔记12-集合
- mysql web日志_mysql日志管理
- Web自动化测试理论知识
- Spring Cloud Sleuth进阶实战
- linux用命令行进行无线连接,linux以命令行下配置连接wlan无线网卡
- 王思聪欠款1.5亿成被执行人 孙宇晨:我帮你还钱!
- JAVA:hotspot 虚拟机的server和client模式
- 科软-信息安全实验3-Rootkit劫持系统调用
- python写的监视bt.ktxp.com的rss的小脚本 updated
- 国家软考--高级系统分析师证书
- 顽固文件删除终极武器
- Mathematica note
- 转载(中文、日文、韩文编码问题)
- og聚流行未能链接到服务器,OG 聚流行:建设一个完善的潮流购买平台
- 基于LSTM网络的视觉识别研究与实现——详细版
- AVL CRUISE硬件在环台架测试
- java金蝶云单据查询_凭证查询
- 【转】ultraedit 正则表达式