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

题海拾贝:力扣 86.分隔链表

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

91bfeb2bb1414a2ebf09cbc4f9706779.gif

我的博客:<但凡.

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

欢迎点赞,关注!

1、题目 

0eea29bef07845289fa3f3373c12e740.png

2、题解

        我们先分析一下思路。他让小于x的在前,大于x的在后,并且保持相对顺序不变,那咱们就新建两个链表,然后遍历原链表,把小于x的放一个链表,大于x的节点放一个链表,最后把两个链表穿起来就好了。

        需要注意的是,咱们得自己给节点初始化。给节点分配内存后别忘了把他的next置空。不然访问->next时后报错。还有一个需要注意的是,我们开辟地址应该是malloc(sizeof(struct ListNode))。我们开辟的空间应该是struct ListNode的大小,只不过是接受的时候用指针接受的,千万不要写成malloc(sizeof(struct ListNode*))!!!

        另外还有一些需要注意的点我标注在代码里了:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* partition(struct ListNode* head, int x) {
        struct ListNode* s1=(struct ListNode*)malloc(sizeof(struct ListNode));
        struct ListNode* s2=(struct ListNode*)malloc(sizeof(struct ListNode));//开辟地址
        //注意我们应该用指针接受动态开辟的地址
        s1->next = NULL;
        s2->next = NULL;
        struct ListNode* s11 = s1;
        struct ListNode* s22 = s2;
        while(head)
        {
            if((head->val)<x)
            {
                s1->next = head;
                s1=head;
            }
            else
            {
                s2->next=head;
                s2=head;
            }
            head=head->next;
        }
        s1->next=s22->next;
        s2->next=NULL;
        //注意如果不加这一条,那么这个代码可能就没有尾了,导致死循环
        return s11->next;
}

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

 

 

 


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

相关文章:

  • 如何使用vscode解决git冲突
  • 计算机毕业设计PyFlink+Hadoop广告推荐系统 广告预测 广告数据分析可视化 广告爬虫 大数据毕业设计 Spark Hive 深度学习 机器学
  • Unity中有什么情况下是需要用UniTask替代其他异步方式的吗?
  • GM_T 0039《密码模块安全检测要求》题目
  • 微服务——技术选型与框架
  • 如何使用Edu邮箱获取免费福利
  • 【Redis经典面试题三】Redis有哪些数据类型?
  • 如何在Ubuntu下通过Docker部署PSQL服务器
  • SPringBoot--第二核心--AOP
  • frp内网穿透笔记
  • 工作与学习方向
  • 本地部署webrtc应用怎么把http协议改成https协议?
  • 青少年编程与数学 02-004 Go语言Web编程 10课题、中间件
  • 13 次小生成树
  • vscode怎么设置anaconda python解释器(anaconda解释器、vscode解释器)
  • 【LeetCode: 24. 两两交换链表中的节点 + 链表】
  • MONI后台管理系统-swagger3(springdoc-openapi)集成
  • 齐次矩阵包含平移和旋转
  • CCF-GESP 等级考试 2023年9月认证C++一级真题解析
  • 未来将要被淘汰的编程语言
  • 滑动窗口 + 算法复习
  • 助力医疗高效运转:SSM 医院预约挂号系统 Vue 技术实现与设计
  • 基于Pytorch实现的说话人日志(说话人分离)
  • kubernates实战
  • 腾讯云智能结构化OCR:以多模态大模型技术为核心,推动跨行业高效精准的文档处理与数据提取新时代
  • Nacos 3.0 考虑升级到 Spring Boot 3 + JDK 17 了!