1 #include <iostream>
2 using namespace std;
3 struct my_list{
4
5 int val;
6 my_list* next;
7 my_list(int _val):val(_val),next(nullptr){}
8 };
9 my_list* reverse_list(my_list* head)
10 {
11 if(head==nullptr) return head;//为空的情况
12
13 my_list* pre=head;
14 my_list* tmp=nullptr;
15 my_list* cur=nullptr;//头节点指向空,所以先初始化为nullptr
16 while(pre)
17 {
18 tmp=pre->next;//保留下一个待处理的节点
19 pre->next=cur;//指向前一个节点
20 cur=pre;
21 pre=tmp;
22 }
23 return cur;
24 }
25 /*
26 Linknode* reverse_ln(Linknode* node) 少定义一个变量
27 {
28 if(node == nullptr) return nullptr;
29 Linknode* pre = nullptr;//前一个位置
30 Linknode* tmp = node;//存后一个位置
31 while(node)
32 {
33 tmp = tmp->next;
34 node->next = pre;
35 pre = node;
36 node = tmp;
37 }
38 return pre;
39 }*/
40 int main(int argc, char *argv[])
41 {
42 my_list *node0=new my_list(1);
43 my_list *node1=new my_list(2);
44 my_list *node2=new my_list(3);
45 my_list *node3=new my_list(4);
46 my_list *node4=new my_list(5);
47 node0->next=node1;
48 node1->next=node2;
49 node2->next=node3;
50 node3->next=node4;
51 auto node=reverse_list(node0);
52 while(node!=nullptr)
53 {
54 cout<<node->val<<" ";
55 node=node->next;
56 }
57 return 0;
58 }