1.递归拷贝
通过递归将链表数据倒过来遍历,再将每个数据写入拷贝到新链表
Cstack::Cstack(Cstack& s)
{
this->top=NULL;
list(s.top);
ilen=s.ilen;
}
void Cstack::list(Node* loc)
{
if(loc==NULL)
return;
list(loc->next);
push(loc->data);
}
2.循环
链表栈使用头插法写的,遍历的时候是倒过来的,因此可以利用用尾插法来实现拷贝
Cstack::Cstack(Cstack& s)
{
this->top=NULL;
Node* temp=s.top;
while(temp!=NULL)
{
Node* pnew=new Node;
pnew->next=NULL;
pnew->data=temp->data;
if(top==NULL)
top=pnew;
else
{
Node* prear=top;
while(prear->next!=NULL)prear=prear->next;
prear->next=pnew;
}
temp=temp->next;
}
}