不改变原链表的情况下,使用C++反转一个链表。
创始人
2024-12-24 14:30:32
0

要在不改变原链表的情况下反转一个链表,可以使用递归的方法。

下面是一个使用C++实现的代码示例:

#include 

struct ListNode {
    int val;
    ListNode* next;
    ListNode(int x) : val(x), next(nullptr) {}
};

ListNode* reverseList(ListNode* head) {
    if (head == nullptr || head->next == nullptr) {
        return head;
    }

    ListNode* newHead = reverseList(head->next);  // 递归反转链表的下一个节点
    head->next->next = head;  // 将当前节点的下一个节点指向当前节点
    head->next = nullptr;  // 将当前节点的next指针置为nullptr,避免出现环

    return newHead;
}

int main() {
    // 创建一个链表: 1->2->3->4->5
    ListNode* head = new ListNode(1);
    ListNode* node2 = new ListNode(2);
    ListNode* node3 = new ListNode(3);
    ListNode* node4 = new ListNode(4);
    ListNode* node5 = new ListNode(5);
    head->next = node2;
    node2->next = node3;
    node3->next = node4;
    node4->next = node5;

    // 反转链表
    ListNode* reversedHead = reverseList(head);

    // 输出反转后的链表: 5->4->3->2->1
    ListNode* current = reversedHead;
    while (current != nullptr) {
        std::cout << current->val << " ";
        current = current->next;
    }

    // 释放内存
    current = reversedHead;
    while (current != nullptr) {
        ListNode* temp = current;
        current = current->next;
        delete temp;
    }

    return 0;
}

这段代码通过递归的方式反转链表。首先,我们检查链表是否为空或只有一个节点,如果是,则直接返回链表。否则,我们使用递归的方式反转链表的下一个节点,并将当前节点的next指针指向当前节点,然后将当前节点的next指针置为nullptr,避免出现环。最后,返回反转后的头节点。

在上面的示例中,我们创建了一个链表:1->2->3->4->5,并将其反转。输出结果为:5 4 3 2 1。注意,在使用递归进行链表反转时,由于每个节点都会被访问两次,所以该方法的时间复杂度是O(n),其中n是链表的长度。

相关内容

热门资讯

透视真的!德扑圈透视(透视)私... 透视真的!德扑圈透视(透视)私人局辅助免费(切实真的有挂)1、全新机制【德扑圈透视软件透明挂】2、全...
透视教程!aapoker怎么开... 透视教程!aapoker怎么开辅助器(透视)免费透视脚本(总是真的是有挂);1、aapoker怎么开...
透视规律!aapoker透视脚... 透视规律!aapoker透视脚本下载(透视)辅助(一直存在有挂)透视规律!aapoker透视脚本下载...
辅助透视!德扑圈透视挂(透视)... 辅助透视!德扑圈透视挂(透视)app安卓版破解版(竟然存在有挂);德扑圈透视挂辅助器中分为三种模型:...
透视透视!aapoker透视方... 透视透视!aapoker透视方法(透视)万能辅助器(好像存在有挂)1、aapoker透视方法系统规律...
透视规律!德扑圈透视(透视)透... 透视规律!德扑圈透视(透视)透视辅助软件激活码(果然有挂)1、完成德扑圈透视透视辅助安装,帮助玩家取...
透视ai!德扑圈透视(透视)辅... 透视ai!德扑圈透视(透视)辅助软件(真是存在有挂)德扑圈透视辅助器中分为三种模型:德扑圈透视软件透...
透视安卓版!aapoker怎么... 透视安卓版!aapoker怎么设置提高好牌几率(透视)ai插件(原来真的是有挂)1、aapoker怎...
透视代打!aapoker辅助怎... 透视代打!aapoker辅助怎么用(透视)透视脚本(总是真的有挂)1、aapoker辅助怎么用透视辅...
透视插件!德普之星透视辅助软件... 透视插件!德普之星透视辅助软件激活码(透视)透视辅助软件下载(一直真的有挂)小薇(透视辅助)致您一封...