LeetCode206反转链表

思路:关键在于,不要引起链表混乱,以及不要丢失链表,所以要注意指针的先后顺序

错误代码

c 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* reverseList(struct ListNode* head)
{
    //
    struct ListNode *pre=head;
    struct ListNode *cur=head;
    while(cur!=NULL)
    {
        cur=pre->next;//在这里会出现指针混淆,cur先更新为pre->next,后cur->next又指回pre,此时要把pre往后跳就会出现错误,因为逻辑上我们是希望pre跳到cur,但是cur的下一个指向了pre,所以就出现了逻辑bug
        cur->next=pre;
        pre=pre->next;
    }
    head->next=NULL;
    head=cur;
    return head;
}

AC代码

c 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* reverseList(struct ListNode* head)
{
    //
    struct ListNode *pre=NULL;
    struct ListNode *cur=head;
    while(head!=NULL)
    {
        //必须先让cur记住head->next,如果先让head->next指向null,那么head后续节点会丢失
       cur=head->next;
       //链表转向
       head->next=pre;
       //pre是后指针,跟上
       pre=head;
       //head指针往前跳
       head=cur;

    }
    //循环终止是head=null,那么pre是后指针,终止的时候刚好指向最后一个节点,所以返回pre
    return pre;
}
相关推荐
啊董dong17 小时前
课后作业-2025年11月23号作业
数据结构·c++·算法·深度优先·noi
dlz083618 小时前
从架构到数据结构,到同步逻辑,到 show run 流程优化
数据结构
jllws118 小时前
数据结构_字符和汉字的编码与查找
数据结构
学困昇18 小时前
C++11中的包装器
开发语言·数据结构·c++·c++11
weixin_457760001 天前
Python 数据结构
数据结构·windows·python
明洞日记1 天前
【数据结构手册002】动态数组vector - 连续内存的艺术与科学
开发语言·数据结构·c++
fashion 道格1 天前
数据结构实战:深入理解队列的链式结构与实现
c语言·数据结构
xxxxxxllllllshi1 天前
【LeetCode Hot100----14-贪心算法(01-05),包含多种方法,详细思路与代码,让你一篇文章看懂所有!】
java·数据结构·算法·leetcode·贪心算法
铁手飞鹰1 天前
二叉树(C语言,手撕)
c语言·数据结构·算法·二叉树·深度优先·广度优先
[J] 一坚1 天前
深入浅出理解冒泡、插入排序和归并、快速排序递归调用过程
c语言·数据结构·算法·排序算法