#include <iostream>
using namespace std;
struct Node
{
int data;
Node* next;
};
//输入:当前需要逆序的头节点
//输出:逆序之后的头结点
Node* Reverse(Node* head)
{
//1、终结条件
if(head->next==NULL)
return head;
Node* pcur;
Node* pnext;
pcur=head;
pnext=head->next;
//2、逆序当前位置之后的数据
Node *p=Reverse(pnext);
//逆序当前位置
pnext->next=pcur;
pcur->next=NULL;
//返回头结点
return p;
}
void show(Node* head)
{
while(head->next!=NULL)
{
cout<<head->data<<" ";
head=head->next;
}
cout<<head->data<<endl;
}
void main()
{
Node a,b,c,d,e;
a.data=1;
a.next=&b;
b.data=2;
b.next=&c;
c.data=3;
c.next=&d;
d.data=4;
d.next=&e;
e.data=5;
e.next=NULL;
show(&a);
Node*mm=Reverse(&a);
show(mm);
return ;
}