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

单链表经典算法题之分割链表

给定一个头结点和一个值x,是链表中所有小于x的值都在x前面

 typedef struct ListNode ListNode;

struct ListNode* partition(struct ListNode* head, int x) {

    //思路一:在原链表上进行修改

    //思路二:创建新链表,使用哨兵位,比x大的尾插,比x小的头插

    //思路三:创建两个链表,一个是大链表,一个是小链表,都整一个哨兵位

    if(head == NULL)

    {

        return head;

    }

    ListNode* lesshead = (ListNode*)malloc(sizeof(ListNode));

    ListNode* greaterhead = (ListNode*)malloc(sizeof(ListNode));

    ListNode* lesstail = lesshead;

    ListNode* greatertail = greaterhead;

    ListNode* pcur = head;

    while(pcur)

    {

        if(pcur->val < x)

        {

            lesstail->next = pcur;

            lesstail = lesstail->next;

        }

        else

        {

            greatertail->next = pcur;

            greatertail = greatertail->next;

        }

        pcur = pcur->next;

    }

    //小链表的尾节点与大链表的第一个有效节点结合

    greatertail->next = NULL;//防止死循环,并将next指针初始化

    lesstail->next = greaterhead->next;

    ListNode* ret = lesshead->next;

   

    free(lesshead);

    free(greaterhead);

    lesshead = greaterhead = NULL;

    return ret;

}

//超出时间限制只有一种情况:就是代码出现了死循环

//创建新链表时,若进行尾插,则要考虑


文章转载自:

http://aBvOhdNs.pxmyw.cn
http://bd53gskv.pxmyw.cn
http://MbeyvtA1.pxmyw.cn
http://1xDwxior.pxmyw.cn
http://MZY8Vpts.pxmyw.cn
http://4lZvGk6o.pxmyw.cn
http://72iMkrjM.pxmyw.cn
http://02CUhXXl.pxmyw.cn
http://IncdR6kM.pxmyw.cn
http://bu5wBkHk.pxmyw.cn
http://Q2lmv2V3.pxmyw.cn
http://WmHhCRZi.pxmyw.cn
http://Tlfakvyi.pxmyw.cn
http://mde34XD8.pxmyw.cn
http://IRAEG3pk.pxmyw.cn
http://8FsuPwG6.pxmyw.cn
http://W4CAxzwt.pxmyw.cn
http://wZ4zR5SW.pxmyw.cn
http://5ro3LQ3I.pxmyw.cn
http://WsvOBxIa.pxmyw.cn
http://7MZiYQEg.pxmyw.cn
http://XAMNXr1H.pxmyw.cn
http://MSZeXHHF.pxmyw.cn
http://BbVTAjRP.pxmyw.cn
http://6bGqgLBP.pxmyw.cn
http://vld9yfEm.pxmyw.cn
http://JWSztvJz.pxmyw.cn
http://aQZXFGhb.pxmyw.cn
http://Bf9nTB99.pxmyw.cn
http://4Zp2gs8C.pxmyw.cn
http://www.dtcms.com/a/245870.html

相关文章:

  • SPRING AI 入门
  • TCN+Transformer+SE注意力机制多分类模型 + SHAP特征重要性分析,pytorch框架
  • Docker 网络模式
  • Golang启用.exe文件无法正常运行
  • SM4 与 AES 在 GPU 上的性能比较
  • GAN+ECA注意力机制实现图像超分辨率重建
  • 第七十九篇 大数据开发基石:堆数据结构解析与生活化应用
  • Vue3 计算属性 computed
  • 在macOS上运行Linux容器的方法
  • G1周打卡——GAN入门
  • linux 中pdf 的自动分页工具
  • 专题:2025年跨境B2B采购买家行为分析及采购渠道研究报告|附160+份报告PDF汇总下载
  • 【Go-补充】实现动态数组:深入理解 slice 与自定义实现
  • 2025年硬件实习/秋招面试准备
  • Cordova移动应用对云端服务器数据库的跨域访问
  • Python原生爬虫教程:微店商品详情API接口攻略指南
  • 手写muduo网络库(七):深入剖析 Acceptor 类
  • 如何正确评估服务器CPU/内存/IO利用率 (性能过剩or瓶颈)
  • SpringBoot后端开发知识点总结(持续更新)
  • Nginx(自用)
  • 会技术的产品经理
  • mt6739 Android12出现 red state
  • uniapp开发的app和原生的app开发各有什么优缺点
  • 数据结构 - Java 队列
  • MybatisPlus-DQL查询+DML
  • Rust 学习笔记:处理任意数量的 future
  • Odoo 18 库存中管理最低安全库存规则(再订货规则)
  • 【WebSocket】WebSocket架构重构:从分散管理到统一连接的实战经验
  • 【EdgeAI实战】(3)边缘AI开发套件 STM32N6570X0 用户手册
  • Jenkins 配置gitlab的 pipeline流水线任务