反转链表的解法分享

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语句以返回新链表的头结点
    }
};
相关推荐
lifallen3 小时前
Hadoop MapReduce 任务/输入数据 分片 InputSplit 解析
大数据·数据结构·hadoop·分布式·算法
熙xi.3 小时前
数据结构 -- 哈希表和内核链表
数据结构·算法·散列表
Univin5 小时前
8.25作业
数据结构·windows
胡萝卜3.07 小时前
数据结构初阶:详解单链表(一)
数据结构·笔记·学习·单链表
闪电麦坤958 小时前
数据结构:红黑树(Red-Black Tree)
数据结构··红黑树
墨染点香9 小时前
LeetCode 刷题【53. 最大子数组和】
数据结构·算法·leetcode
NekoCNN10 小时前
现代视角下的线性表全解
数据结构
工藤新一¹10 小时前
C/C++ 数据结构 —— 树(2)
c语言·数据结构·c++·二叉树··c/c++
七十二小時10 小时前
力扣热题——前K个高频元素
数据结构·算法·leetcode