C++反转链表

#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;
}

 

上一篇:clk_enable


下一篇:ts笔记 - 流动类型