zoukankan      html  css  js  c++  java
  • 数据结构练习(37)复杂链表的复制

    http://zhedahht.blog.163.com/blog/static/254111742010819104710337/

    思路:

    最后一种方法实在是巧妙,关于链表操作确实有很多精彩的地方,还需要不断的积累才行啊。

    struct ComplexNode {
        int m_value;
        ComplexNode* m_pNext;
        ComplexNode* m_pSibling;
    };
    
    void CloneNodes(ComplexNode* pHead)
    {
        ComplexNode* pNode = pHead;
    
        while (pNode != NULL)
        {
            ComplexNode* pClone = new ComplexNode;
            pClone->m_value = pNode->m_value;
            pClone->m_pNext = pNode->m_pNext;
            pClone->m_pSibling = NULL;
    
            pNode->m_pNext = pClone;
            pNode = pNode->m_pNext;
        }
    }
    
    void ConnectSiblingNodes(ComplexNode* pHead)
    {
        ComplexNode* pNode = pHead;
    
        while (pNode != NULL)
        {
            ComplexNode* pClone = pNode->m_pNext;
            if (pClone && pNode->m_pSibling)
                pClone->m_pSibling = pNode->m_pSibling->m_pNext;
            pNode = pClone->m_pNext;
        }
    }
    
    ComplexNode* ReconnectNodes(ComplexNode* pHead)
    {
        ComplexNode* pNode = pHead;
        ComplexNode* pCloneHead = NULL;
        ComplexNode* pCloneNode = NULL;
    
        if (pNode != NULL)
        {
            pCloneHead = pNode->m_pNext;
            pCloneNode = pCloneHead;
            pNode->m_pNext = pCloneHead->m_pNext;
            pNode = pNode->m_pNext;
        }
      
        while (pNode != NULL)
        {
            pCloneNode->m_pNext = pNode->m_pNext;
            pCloneNode = pCloneNode->m_pNext;
    
            pNode->m_pNext = pCloneNode->m_pNext;
            pNode = pNode->m_pNext;
        }
    
        return pCloneHead;
    }
    
    ComplexNode* Clone(ComplexNode* pHead)
    {
        CloneNodes(pHead);
        ConnectSiblingNodes(pHead);
        return ReconnectNodes(pHead);
    }
    -------------------------------------------------------

    kedebug

    Department of Computer Science and Engineering,

    Shanghai Jiao Tong University

    E-mail: kedebug0@gmail.com

    GitHub: http://github.com/kedebug

    -------------------------------------------------------

  • 相关阅读:
    推荐系统多样性指标衡量
    deepfm代码参考
    tf多值离散embedding方法
    样本加权
    tensorflow 分布式搭建
    优化器
    协同过滤代码
    NLP
    双线性ffm
    各种总结
  • 原文地址:https://www.cnblogs.com/kedebug/p/2828131.html
Copyright © 2011-2022 走看看