复杂链表的复制

原创 2015年07月09日 14:24:28

解法一:


解法二:



void CloneNodes(ComplexListNode* pHead)
{
ComplexListNode* pNode = pHead;
while (pNode != NULL)
{
ComplexListNode* pCLoned = new ComplexListNode();
pCloned->m_nValue = pNode->m_nValue;
pCloned->m_pNext = pNode->m_pNext;
pNode->m_pNext = pCloned;
pNode = pCloned->m_pNext;
}
}


void ConnectSiblingNodes(ComplexListNode* pHead)
{
ComplexListNode* pNode = pHead;
while (pNode != NULL)
{
ComplexListNode*pCloned = pNode->m_pNext;
if (pNode->m_pSibling != NULL)
{
pCloned->m_pSibling = pNode->m_pSibling->m_pNext;


}
pNode = pCloned->m_pNext;
}
}


ComplexListNode* ReconnectNodes(ComplexListNode* pHead)
{
ComplexListNode* pNode = pHead;
ComplexListNode* pClonedHead = NULL;
ComplexListNode* pClonedNode = NULL;
if (pNode != NULL)
{
pClonedHead = pClonedNode = pNode->m_pNext;
pNode->m_pNext = pClonedNode->m_pNext;
}
while (pNode != NULL)
{
pClonedNode->m_pNext = pNode->m_pNext;
pClonedNode = pClonedNode->m_pNext;
pNode->m_pNext = pClonedNode->m_pNext;
pNode = pNode->m_pNext;
}
return pClonedHead;
}

把上面三步合起来,就是复制链表的完整过程:

ComplexListNode* Clone(ComplexListNode* pHead)

{

       CloneNodes(pHead);

       ConnectSiblingNodes(pHead);

       return ReconnectNodes(pHead);

}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

复杂链表的复制

题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,...

25.复杂链表的复制

题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,...

复杂链表的复制

//复杂链表的复制 #include #include using namespace std; struct complexNode { char value; complexNode *pN...

复杂链表的复制

【问题描述】 有一个这样的复杂链表:每个节点有一个数据域val,一个指向下一个节点的next指针;和一个指向链表中任意一个节点或者为NULL的random指针;现要求复制一个完全一样的链表出来。 ...

剑指Offer:复杂链表的复制

# -*- coding:utf-8 -*- #class RandomListNode: # def __init__(self, x): # self.label = x #...

复杂链表的复制

题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,...

复杂链表的复制

时间限制:1秒空间限制:32768K通过比例:19.61%最佳记录:0 ms|8552K 题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指...

链表面试题之复杂链表的复制

复杂链表的复制:一个链表的每个节点,有一个指向next指针指向下一个节点,还有一个RandNext指针指向这个链表中的一个随机节点或者NULL,现在要求实现复制这个链表,返回复制后的新链表。 //ps...

16 复杂链表的复制

前言本博文部分图片, 思路来自于剑指offer 或者编程珠玑问题描述思路对于这个问题, 书中给出了两种解法, 难点在于对于sibling引用的复制 对于 这两种思路, 我本来是想画图的, 但是 感觉...

复杂链表的复制

转自:http://blog.csdn.net/hackbuteer1/article/details/6901934 题目:有一个复杂链表,其结点除了有一个m_pNext指针指向下一个结点外,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)