#include
using namespace std;
struct my_list{
int val;
my_list* next;
my_list(int _val):val(_val),next(nullptr){}
};
my_list* reverse_list(my_list* head)
{
if(head==nullptr) return head;//为空的情况
my_list* pre=head;
my_list* tmp=nullptr;
my_list* cur=nullptr;//头节点指向空,所以先初始化为nullptr
while(pre)
{
tmp=pre->next;//保留下一个待处理的节点
pre->next=cur;//指向前一个节点
cur=pre;
pre=tmp;
}
return cur;
}
int main(int argc, char *argv[])
{
my_list *node0=new my_list(1);
my_list *node1=new my_list(2);
my_list *node2=new my_list(3);
my_list *node3=new my_list(4);
my_list *node4=new my_list(5);
node0->next=node1;
node1->next=node2;
node2->next=node3;
node3->next=node4;
auto node=reverse_list(node0);
while(node!=nullptr)
{
cout<val<<" ";
node=node->next;
}
return 0;
}