• 【手撕】翻转链表


    #include<iostream>
    
    using namespace std;
    
    struct ListNode
    {
        int val;
        ListNode *next;
        ListNode(int x) : val(x), next(nullptr) { }
    };
    
    class Solution
    {
    public:
        ListNode* reverseList(ListNode* head)
        {
            if (head == nullptr || head->next == nullptr)
            {
                return head;
            }
            ListNode* cur = head;
            ListNode* pre = nullptr;
            while (cur != nullptr)
            {
                ListNode* next = cur->next;
                cur->next = pre;
                pre = cur;
                cur = next;
            }
            return pre;
        }
    };
    
    int main()
    {
        ListNode* node1 = new ListNode(1);
        ListNode* node2 = new ListNode(2);
        ListNode* node3 = new ListNode(3);
        ListNode* node4 = new ListNode(4);
        node1->next = node2;
        node2->next = node3;
        node3->next = node4;
        ListNode* head = node1;
        ListNode* cur = node1;
    
        cout << "翻转之前的链表为:";
        while (cur != nullptr)
        {
            cout << cur->val <<"->";
            cur = cur->next;
        }
        cout << "nullptr" << endl;
    
        Solution solution;
        cur = solution.reverseList(head);
    
        cout << "翻转之后的链表为:";
        while (cur != nullptr)
        {
            cout << cur->val << "->";
            cur = cur->next;
        }
        cout << "nullptr" << endl;
    
        return 0;
    }
  • 相关阅读:
    Google的Protobuf安装及使用笔记一
    std::list与std::map的排序比较
    svn库镜像
    daemontools中supervise系统进程监控
    memcached的客户端
    Memcached安装及使用
    eclipse下maven配置
    栈溢出
    堆排序
    redis使用笔记
  • 原文地址:https://www.cnblogs.com/masbay/p/14194821.html
Copyright © 2020-2023  润新知