1.非递归实现。
void List::inverse()
{
Node *p1 = Head, *p2,*p3;
p2 =p3=NULL;
while (p1)
{
p2 = p1->next;
p1->next = p3;
Head =p3= p1;
p1 = p2;
}
}
2.递归实现,就是通过不断的调用自己,最后实现转置。
Node * List::inverse(Node *p)
{
Node *p1;
if (p==NULL||p->next==NULL)
{
Head = p;
return p;
}
else
{
p1 = inverse(p->next);
p1->next= p;
p->next = NULL;
}
return p;
}