您现在的位置是:首页 >技术教程 >【力扣-206】反转链表网站首页技术教程

【力扣-206】反转链表

Djx_hmbb 2023-05-19 04:00:04
简介【力扣-206】反转链表

🖊作者 : Djx_hmbb
📘专栏 : 数据结构
😆今日分享 :
----------“覆蕉寻鹿”:
有的人把假的当成真的,而又有人把明明是真的事情当成假的,前者可以说是“黄粱美梦”,后面这种就是“覆蕉寻鹿”。以前有个樵夫打死了一头野鹿,因为一时带不回家,怕被其他人发现,就先用芭蕉叶把牠覆盖起来;后来樵夫去找鹿,忘记了所藏的地方,怎么也找不到,最后以为是自己做了一场梦。所以用“覆蕉寻鹿”来比喻把真实的事情看作梦幻的情况,也可用“覆鹿寻蕉”,都是一个意思。 ------谢一
在这里插入图片描述

✔题目链接 :

【力扣-203】

✔题目:

:>解题思路:三指针翻转法 和 头插法

在这里插入图片描述

✔法一(头插法):

:> 方法 : 每一个节点都进行头插 -> 直接新一个头指针 , 然后将原指针的结点依次赋值给新指针

struct ListNode* reverseList(struct ListNode* head){
    struct ListNode* cur = head;
    struct ListNode* newhead = NULL;

    //头指针为空时,返回头指针
    if (head == NULL)
    {
        return head;
    }
    //头指针不为空时,
    while (cur != NULL)
    {
        struct ListNode* next = cur->next;
        cur->next = newhead;
        newhead = cur;
        cur = next;
    }
    return newhead;
}

✔图解:

请添加图片描述

✔法二(三指针反转法):

struct ListNode* reverseList(struct ListNode* head) {
//三指针反转法
    if (head == NULL || head->next == NULL)
    {
        return head;
    }
    SLT* n1 = head;
    SLT* n2 = n1->next;
    SLT* n3 = n2->next;
    n1->next = NULL;
    while (n2)//
    {
      n2->next = n1;
      n1 = n2;
      n2 = n3;
      if(n3)
        n3 = n3->next;
    }
    return n1;
}

✔图解:

请添加图片描述


感谢家人的阅读,若有不准确的地方 欢迎在评论区指正!

家人们,点个请添加图片描述再走呗~

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。