反转链表的解法分享

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语句以返回新链表的头结点
    }
};
相关推荐
晚云与城3 分钟前
【数据结构】-----排序的艺术画卷
数据结构·算法·排序算法
j_xxx404_37 分钟前
数据结构:算法复杂度与空间复杂度
c语言·数据结构·算法
墨染点香2 小时前
LeetCode 刷题【24. 两两交换链表中的节点、25. K 个一组翻转链表】
算法·leetcode·链表
自由随风飘2 小时前
旅游城市数量最大化 01背包问题
数据结构·c++·算法·动态规划·旅游
好好先森&3 小时前
C语言:冒泡排序
c语言·数据结构·算法·遍历·冒牌排序
肉夹馍不加青椒4 小时前
第二十三天(数据结构:链表补充【希尔表】)
数据结构·链表
草莓熊Lotso5 小时前
【LeetCode刷题指南】--单值二叉树,相同的树
c语言·数据结构·算法·leetcode·刷题
Asu52026 小时前
链表反转中最常用的方法————三指针法
java·数据结构·学习·链表
闪电麦坤956 小时前
数据结构:在链表中查找(Searching in a Linked List)
数据结构·链表
泥泞开出花朵8 小时前
LRU缓存淘汰算法的详细介绍与具体实现
java·数据结构·后端·算法·缓存