复杂链表的复制

it2026-01-06  8

新的解决方案: #ifndef COMPLEX_LISTCLONE_H#define COMPLEX_LISTCLONE_H#include<iostream>struct ComplexListNode{ int m_nValue; struct ComplexListNode *m_pNext; struct ComplexListNode *m_pSibling; }; ComplexListNode *complexListCloned(ComplexListNode **head){ cloneNodes(head); connectpSibingNodes(head); reconnectNodes(head);}void cloneNodes(ComplexListNode **head){ ComplexListNode *pNode=*head; while(pNode!=NULL){ ComplexListNode *pClonedNode=new ComplexListNode(); pClonedNode->m_nValue=pNode->m_nValue; pClonedNode->m_pNext=pNode->m_pNext; pNode->m_pNext=pClonedNode; pClonedNode->m_pSibling=NULL; pNode=pNode->m_pNext; }}void connectpSibingNodes(ComplexListNode **head){ ComplexListNode *pNode=*head; ComplexListNode *pCloned=NULL; while(pNode!=NULL){ if(pNode->m_pSibling!=NULL){ ComplexListNode *pCloned=pNode->m_pNext; pCloned->m_pSibling=pNode->m_pSibling->m_pNext; } pNode=pCloned->m_pNext; }}ComplexListNode* reconnectNodes(ComplexListNode **head){ if(*head==NULL||head==NULL){ return ; } ComplexListNode *pNode=*head; ComplexListNode *cloneRoot=pNode->m_pNext; ComplexListNode *cloneNode=cloneRoot; while(pNode!=NULL){ pNode->m_pNext=cloneNode->m_pNext; pNode=pNode->m_pNext; cloneNode->m_pNext=pNode->m_pNext; cloneNode=cloneNode->m_pNext; } return cloneRoot; }#endif 来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/yml435/p/4655483.html

最新回复(0)