#include <iostream> 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<<node->val<<" "; node=node->next; } return 0; }