zoukankan      html  css  js  c++  java
  • 【手撕】翻转链表

    #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;
    }
  • 相关阅读:
    软件工程二人组队开发第一周
    软件工程第五周
    这学期的目标
    软件工程第四周的总结
    二维数组的最大子数组和 时间复杂度:O(n的四次方)
    10.tesseract
    mysql存储过程和函数
    mysql触发器
    9.selenium
    mysql练习
  • 原文地址:https://www.cnblogs.com/masbay/p/14194821.html
Copyright © 2011-2022 走看看