C++反转链表

 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     }

 

posted @ 2021-12-29 21:44  菠萝超级酸  阅读(161)  评论(0编辑  收藏  举报