反转链表的解法分享

1、双指针法
cpp 复制代码
 ListNode* addInList(ListNode* head1, ListNode* head2) {
        // write code here
       ListNode* ReverseList(ListNode* pHead){
            if(pHead == NULL)
                return NULL;
            ListNode* cur = pHead;
            ListNode* pre =NULL;
            while(cur != NULL)
            {
                ListNode* temp = cur->next;
                cur->next = pre;
                pre = cur;
                cur = temp;
            }
            return  pre;
       } 
    }
2、递归写法
cpp 复制代码
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        return reverse(head,nullptr);
    }
    ListNode* reverse(ListNode* cur, ListNode* pre) {
        if (cur == nullptr) return pre;

        ListNode* temp = cur->next;
        cur->next = pre;
        return reverse(temp, cur); // 添加return语句以返回新链表的头结点
    }
};
相关推荐
重生之后端学习5 分钟前
19. 删除链表的倒数第 N 个结点
java·数据结构·算法·leetcode·职场和发展
aini_lovee13 分钟前
严格耦合波(RCWA)方法计算麦克斯韦方程数值解的MATLAB实现
数据结构·算法·matlab
Remember_99341 分钟前
【数据结构】深入理解优先级队列与堆:从原理到应用
java·数据结构·算法·spring·leetcode·maven·哈希算法
Shirley~~2 小时前
leetcode移除元素
javascript·数据结构·算法
wen__xvn2 小时前
基础数据结构第08天:栈(实战篇)
数据结构·c++·算法
wen__xvn2 小时前
基础算法集训第04天:选择排序和冒泡排序
数据结构·算法·leetcode
充值修改昵称3 小时前
数据结构基础:二叉树高效数据结构的奥秘
数据结构·python·算法
wen__xvn4 小时前
基础算法集训第01天:线性枚举
数据结构·c++·算法
Remember_9934 小时前
【LeetCode精选算法】二分查找专题一
java·数据结构·算法·spring·leetcode·哈希算法
wen__xvn5 小时前
码蹄杯刷题
数据结构·c++·算法