复杂链表的复制

原创 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);

}


剑指Offer:复杂链表的复制

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

LintCode(M) 复制带随机指针的复杂链表

复制带随机指针的链表描述 笔记 数据 评测 给出一个链表,每个节点包含一个额外增加的随机指针可以指向链表中的任何节点或空的节点。返回一个深拷贝的链表。 您在真实的面试中是否遇到过这个题?...

复杂链表的复制(Java实现)

该题为剑指offer面试题26 牛客网测试地址:https://www.nowcoder.com/questionTerminal/f836b2c43afc4b35ad6adc41ec941...

剑指offer面试题26-复杂链表的复制

题目: 请实现函数ComplexListNode* Clone(ComplexListNode* pHead),复制一个复杂链表。 在复杂链表中,每一个节点除了一个m_pNext指针指向下一个节点外,...

剑指Offer:面试题26——复制复杂的链表(java实现)

问题描述: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。 思路1: 1.先复制链表节点,并用next链接起来。 2.然后对每...

面试题26:复杂链表的复制

在面试中,最常见的面试题总绕不过链表,关于链表能考的东西太多,对一个题的思考也能从各个方面展现出现。在《剑指offer》中,复杂链表的复制问题就像是一股清流。关于链表的复制,大家第一反应都是开辟一个新...

剑指offer面试题26-复杂链表的复制

题目:给定一个复杂链表,对其进行复制产生一个新的复杂链表。复杂链表中每个节点中有三个部分:数据域,指向链表中下一个节点的指针,指向链表中其他任意一个节点的指针。复杂链表中节点的定义如下: struct...

剑指offer 面试题26 复杂链表的复制

剑指offer 面试题26 复杂链表 题目: 请实现函数 ComplexListNode clone(ComplexListNode head), 复制一个复杂链表。在复杂链表中,每个...

【剑指Offer面试编程题】题目1524:复杂链表的复制--九度OJ

这道题目主要还是题目的意思有点混淆不清吧,所谓的输出“第二个代表当前节点的特殊指针的值”,很有可能理解成当前节点的指针值,也就是元素的编号。但实际是指针所指的元素的值。题目当然肯定是很简单的,只需要利...

剑指offer面试题26之复杂链表的复制

1,题目: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。求一个复制体。 2,考虑点: (1),链表为空的情况。 (2),链表只有一个结点...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:复杂链表的复制
举报原因:
原因补充:

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