#include"wz.h"
struct ComplexNode{ int value; ComplexNode* pNext; ComplexNode* pSibling;};      
  void deleteList(ComplexNode* pHead)
 { while(pHead!=NULL)
    { ComplexNode* pNext = pHead->pNext; delete pHead; pHead = pNext; }
  }

void Con(ComplexNode* pHead)  
{  
    ComplexNode* pNode = pHead;  
    while(pNode != NULL)              
    {  
        ComplexNode *pCloned = pNode->pNext;  
        if(pNode->pSibling != NULL)  
        {  
            pCloned->pSibling = pNode->pSibling->pNext;   
        }  
        pNode = pCloned->pNext;  
    }  
}  
void print(ComplexNode* pHead)
{ ComplexNode* p=pHead;
  while(p) { cout<<p->value<<" ";  p=p->pNext;}
  cout<<endl;
}
 ComplexNode* myClone2(ComplexNode* pHead)
 {  
   ComplexNode*p= new ComplexNode;
   ComplexNode*q= NULL;
   ComplexNode*newhead= NULL;
    if(pHead)
  {   p=pHead;
    while(p->pNext)
    {
     ComplexNode*add= new ComplexNode;
     add->value=p->value;
     add->pSibling=NULL;add->pNext=p->pNext;
     p->pNext=add;
     p=p->pNext->pNext;
   }
     ComplexNode*add= new ComplexNode;
     add->value=p->value;
     add->pSibling=NULL;add->pNext=p->pNext;
     p->pNext=add;
     p=pHead;
     q=p->pNext;
     newhead=q;
  
     Con(p);
     q=newhead;
     while(q->pNext)
    {
    p->pNext=q->pNext;p=p->pNext;
    q->pNext=p->pNext;q=q->pNext;
   }
     p->pNext=NULL;                      
  }
return newhead;
}
void t2()
{   ComplexNode* p1 = new ComplexNode; ComplexNode* p2 = new ComplexNode;
    ComplexNode* p3 = new ComplexNode; ComplexNode* p4 = new ComplexNode;
    p1->pNext = p2; p2->pNext = p3; p3->pNext = p4; p4->pNext = NULL;
    p1->value = 1 ; p2->value = 2; p3->value = 3 ; p4->value = 4;
    p1->pSibling = p3;p2->pSibling = p4; p3->pSibling = NULL; p4->pSibling = NULL;
    print(p1);
    ComplexNode* newHead = myClone2(p1);
 cout<<"old link:"<<endl;   print(p1);
 cout<<"new link:"<<endl;    print(newHead);
    cout<<(newHead->pSibling)->value<<endl; //3
    deleteList(newHead);
    deleteList(p1);   
}
int main()
{
t2();
return 0;
}