力扣---LeetCode206. 反转链表(链表经典题)


前言

“黑暗也别枯萎 我骄傲的向日葵”
本章的内容是力扣每日随机一题的部分方法的解析


提示:以下是本篇文章正文内容,下面案例可供参考

206. 反转链表

链接:

206. 反转链表 ink

方法一:改变指针指向

1.1代码:

struct ListNode* reverseList(struct ListNode* head)
{
    
    
    if(head==NULL)
        return NULL;
    struct ListNode*n1=NULL;
    struct ListNode*n2=head;
    struct ListNode*n3=n2->next;
    while(n2)
    {
    
    
        n2->next=n1;
        n1=n2;
        n2=n3;
        if(n3!=NULL)
            n3=n3->next;
    }
    return n1;
}

1.2流程图

在这里插入图片描述

1.3注意:

  • 当n2结束时才完成了链表的反转而非n3如果时n3则4和5就没有进入循环就不会反转
  • 要判断一下n3不等于NULL才能n3=n3->next

方法二:头插

2.1代码:

struct ListNode* reverseList(struct ListNode* head)
{
    
    
    struct ListNode*rhead=NULL;
    struct ListNode*cur=head;
    while(cur)
    {
    
    
        struct ListNode*next=cur->next;
        cur->next=rhead;
        rhead=cur;
        cur=next;
    }
    return rhead;
}

2.2流程图:

在这里插入图片描述


总结

Ending,今天的力扣每日一题内容就到此结束啦,如果后续想了解更多,就请关注我吧,一键三连,还有许多种方法没有写出希望各位佬补充哦~

猜你喜欢

转载自blog.csdn.net/ljq_up/article/details/130370154