复杂链表的复制
来源:互联网 发布:java中多继承 编辑:程序博客网 时间:2024/06/05 16:06
struct ComplexListNode
{
int m_val;
ComplexListNode* m_pNext;
ComplexListNode* m_pSibling;
};
void CloneNodes(ComplexListNode* pHead)
{
ComplexListNode* pNode = pHead;
while(pNode != NULL)
{
ComplexListNode* pCloned = new ComplexListNode();
pCloned->m_val = pNode->m_val;
pCloned->m_pNext = pNode->m_pNext;
pCloned->m_pSibling = NULL;
pNode->m_pNext = pCloned; pNode = pCloned->m_pNext;}
}
void ConnectsiblingNodes(ComplexListNode* pHead)
{
ComplexListNode* pNode = pHead;
while(pNode != NULL)
{
ComplexListNode* pClonded = pNode->m_pNext;
if(pClonded != NULL)
{
pClonded->m_pSibling = pNode->m_pSibling->m_pNext;
}
pNode = pClonded->m_pNext;
}
}
ComplexListNode* ReconnectNodes(ComplexListNode* pHead)
{
ComplexListNode* pNode = pHead;
ComplexListNode* pCloneHead = NULL;
ComplexListNode* pCloneNode = NULL;
if(pNode != NULL){ pCloneHead = pCloneNode = pNode->m_pNext; pNode->m_pNext = pCloneNode->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;
}
ComplexListNode* Clone(ComplexListNode* pHead)
{
CloneNodes(pHead);
ConnectsiblingNodes(pHead);
return ReconnectNodes(pHead);
}
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复制复杂的链表
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- Hessian入门实例
- 设计模式之观察者模式
- MySQL交叉表:纵向数据显示为横向
- oracle数据库----关系视图
- 异步线程设置网络图片
- 复杂链表的复制
- php 数据访问练习:投票页面
- 2017PHP经典面试题
- 日常笔记之DDR
- 简单的tablayout频道管理
- 整数三分模板
- 将一个二叉搜索树转换成双向链表
- 基于docker的mongo-db开启授权密码访问
- eclipse importing maven projects installing jax-rs (rest web service) facet