struct node
{
int data;
node *next;
};
递归算法:
node * Reverse(node *List,node*pre=NULL){
if(List==NULL) return List;
node *next = List->next;
List->next=pre;
return next==NULL?List:Reverse(next,List);
}
node * Reverse(node*head)
{
if(head==NULL)return NULL;
node*pre=head;
node*p=pre->next;
node *q=NULL;
while(p!=NULL)
{
q=p->next;
p->next=pre;
if(pre==head) //防止出现环
pre->next=NULL;
pre=p;
p=q;
}
return pre;
}