C/C++教程

C++反转链表

本文主要是介绍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;
}

 

这篇关于C++反转链表的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!