当前位置: 首页 > article >正文

题海拾贝:力扣 反转链表

         Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路!

91bfeb2bb1414a2ebf09cbc4f9706779.gif

我的博客:<但凡.

我的专栏:《编程之路》、《数据结构与算法之美》、《题海拾贝》

欢迎点赞,关注!

1、题目 

8174b849bf2f4097bc7ca1d8e2c7d64b.png

2、题解 

思路一(最优解):

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* reverseList(struct ListNode* head) {
    if(head==NULL||head->next==NULL)
    {
        return head;
    }
    else
    {
         struct ListNode*n1=head;
         struct ListNode*n2=head->next;
         struct ListNode*n3=n2->next;
         n1->next=NULL;
         while(n3!=NULL)
         {
            n2->next=n1;
            n1=n2;n2=n3;n3=n3->next;
         }
          n2->next=n1;
          return n2;
    }
}

思路二(空间换时间):

 struct ListNode {
      int val;
     struct ListNode *next;
 };
struct ListNode* reverseList(struct ListNode* head) {
    if (head == NULL || head->next == NULL)
    {
        return head;
    }
    struct ListNode* newhead = head;
    struct ListNode* cur = head->next;
    head->next = NULL;//注意,易错点,不写会造成死循环
    while (cur)
    {
        //错误示范
        //struct ListNode* pcur = cur;
        把pcur头插到新链表上
        //pcur->next = newhead;
        //newhead = pcur;
        //方法一
       /* struct ListNode* pcur = (struct ListNode*)malloc(sizeof(struct ListNode));
        pcur->val = cur->val;
        pcur->next = newhead;
        newhead = pcur;
        cur = cur->next;*/
        //方法二
        struct ListNode* pcur = cur;
        cur = cur->next;
        pcur->next = newhead;
        newhead = pcur;
    }
    return newhead;
}

        好了,今天不的内容就分享到这,我们下期再见!

 


http://www.kler.cn/a/510379.html

相关文章:

  • Source insight快捷导入工程流程 Source insight导入MDK工程文件
  • C# 委托和事件(Lambda表达式)
  • STL--list(双向链表)
  • Mousetrap:打造高效键盘快捷键体验的JavaScript库
  • PageHelper快速使用
  • 令牌主动失效机制实现——Redis登录优化
  • 基于 WEB 开发的房屋中介租赁销售系统设计与实现
  • Unity中实现伤害跳字效果(简单好抄)
  • springboot基于微信小程序的智慧乡村政务服务系统
  • 大数据治理:提升数据质量与合规性,助力企业数字化转型
  • 【Linux系统编程】—— 深入理解Linux进程优先级与调度机制
  • Python数据分析案例70——基于神经网络的时间序列预测(滞后性的效果,预测中存在的问题)
  • 3D 视觉语言推理中的态势感知
  • “提升大语言模型推理与规划能力的策略:思维链提示与由少至多提示”
  • 数据库基础练习1(创建表,设置外键,检查,不为空,主键等约束)安装mysql详细步骤
  • ROS通信机制全解析
  • 免签支付工具分享
  • Redis延迟队列详解
  • Mysql InnoDB B+Tree是什么?
  • Spring Boot 3.4.x 和 Micrometer 2.0 的结合 案例 以及使用方法