给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你应当 保留 两个分区中每个节点的初始相对位置。

示例 1:
输入:head = [1,4,3,2,5,2], x = 3
输出:[1,2,2,4,3,5]

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/partition-list

思想:创建两个新链表,一个用来存放小于x的值,一个用来存放大于xde 值;每一个新链表开辟两个新节点指针Tail,Head,意味着用来指向表头和表尾;Head在那站桩不动以便后续返回新链表 Tail则不断更新

注意:防止链表循环,例如:原链表为1->4->3->2->5->2->NULL给定值为3

lessHead:1->2->2->NULL

greaterHead:4->3->5->NULL

新链表应为:1->2->2->4->3->5->NULL在这里若5的next域没有置空,则它的next仍指向原链表所指向的2,而在新链表中2的next域又指向4如此就形成了循环,就会导致崩

struct ListNode* partition(struct ListNode* head, int x)
{
struct ListNode*cur;
struct ListNode*lessTail;
struct ListNode*lessHead;
struct ListNode*greaterTail;
struct ListNode*greaterHead;
lessTail=lessHead=(struct ListNode*)malloc(sizeof(struct ListNode));
lessTail->next=NULL;
greaterTail=greaterHead=(struct ListNode*)malloc(sizeof(struct ListNode));
greaterTail->next=NULL;
cur=head;//开创一个哨兵结点
while(cur)
{if(cur->val<x)//将原链表小于x的值尾插进lessTail{lessTail->next=cur;lessTail=cur;//尾插值在不断更新}else{greaterTail->next=cur;//将大于x的数据尾插在greaterTail后面greaterTail=cur;}cur=cur->next;//在cur不为空的情况下执行完上面判断}
lessTail->next=greaterHead->next;//存放值大于x的整体链表插入到存放值小于x的链表后面
greaterTail->next=NULL;//将新链表表尾置空,不然若新链表表尾元素在原链表不是表尾,新链表表尾它的next就会指向那个值形成循环链表
struct ListNode*pre=lessHead->next;//销毁开辟出来的新节点
free(lessHead);//释放
free(greaterHead);//释放return pre;//返回新链表
}

由于编者能力有限,在这篇文章中若有不足之处请各位网友在评论区指正。其次由于是第一次写博客些许排版并不熟练,请各位海涵

LeetCode 86题相关推荐

  1. LeetCode算法题-Convert a Number to Hexadecimal(Java实现)

    这是悦乐书的第219次更新,第231篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第86题(顺位题号是405).给定一个整数,写一个算法将其转换为十六进制.对于负整数,使 ...

  2. C#LeetCode刷题-双指针

    双指针篇 # 题名 刷题 通过率 难度 3 无重复字符的最长子串 24.5% 中等 11 盛最多水的容器 43.5% 中等 15 三数之和 16.1% 中等 16 最接近的三数之和 34.6% 中等 ...

  3. C#LeetCode刷题-链表

    链表篇 # 题名 刷题 通过率 难度 2 两数相加   29.0% 中等 19 删除链表的倒数第N个节点   29.4% 中等 21 合并两个有序链表 C#LeetCode刷题之#21-合并两个有序链 ...

  4. python基础刷题_数据结构与算法LeetCode刷题(Python)

    参考资料: 一.链表 1.  链表的必备知识要点(包括基础知识.刷题中使用的STL等知识) 2.  链表逆序(LeetCode 92 ,206. Reverse Linked List 1,2) 3. ...

  5. LeetCode 刷题之路(python版)

    摘自:https://blog.csdn.net/qq_32384313/article/details/90745354 LeetCode 刷题之路(python版) 小坏wz 2019-06-02 ...

  6. LeetCode 数据库题库解析之 175. 组合两个表

    文章目录 题目描述 题目解析 MySQL 实现 Oracle 实现 SQL Server 实现 知识扩展 内连接 左外连接 右外连接 全外连接 交叉连接 自然连接 自连接 半连接 反连接 大家好,我是 ...

  7. Leetcode-How-What 力扣Leetcode刷题指南

    Leetcode-How-What 力扣Leetcode刷题指南 About the way how to use Leetcode wisely for preparing the intervie ...

  8. 面试算法LeetCode刷题班—BAT面试官带你刷真题、过笔试

    课程名称: <面试算法LeetCode刷题班> --BAT面试官带你刷真题.过笔试 主讲老师: 林老师 BAT资深研发工程师(T7/P8级),致力于搜索引擎及其子系统的研发.迭代与优化,数 ...

  9. LeetCode刷题记录15——21. Merge Two Sorted Lists(easy)

    LeetCode刷题记录15--21. Merge Two Sorted Lists(easy) 目录 LeetCode刷题记录15--21. Merge Two Sorted Lists(easy) ...

最新文章

  1. 2017年全国计算机一级选择题,2017年全国计算机一级选择题题库
  2. 不知道这 7 大 OpenCV 函数怎么向计算机视觉专家进阶?
  3. 003:Virtualenvwrapper使用
  4. etcd安装及go简单操作
  5. Spring使用注释
  6. SQL Server 数据库关键知识点详解(优秀经典)
  7. 协议转换器主要是应用在哪些地方?
  8. python 神经网络原理_神经网络理论基础及Python实现
  9. matlab 高斯迭代代码_主动降噪与双麦降噪原理与实现前篇——LMS算法的matlab实现...
  10. Linux服务器中的wget、curl和scp
  11. Centerface + Facenet实现视频人脸识别(附代码)
  12. 2019年9月省市区/县SQL数据——第二篇
  13. apple pencil值不值得购买?ipad平替电容笔安利
  14. python如何实现语音识别
  15. java hasnext_java – hasNext() – 什么时候阻止,为什么?
  16. Python让Excel飞起来—批量处理工作薄和工作表
  17. 基于卷积神经网络的验证码识别(准确率87.5%+)
  18. 纯CSS实现地图标记光圈扩散效果
  19. iTOP-RK3568开发板Ubuntu系统修改dns
  20. linux系统浏览器无声音,在Deepin 20系统中外接显示器切换后浏览器没有声音的解决经历...

热门文章

  1. Ubuntu安装openssl
  2. hadoop【大象】慕课笔记
  3. 鸿蒙系统是真后台还是假后台,【图片】emui现在还是安卓吗?还是底层已经是鸿蒙了?以前这个点击器清了后台,前台点击也就没了,现在清了照样工作【手机吧】_百度贴吧...
  4. RecyclerView库中的遗珠
  5. stm32 中断处理
  6. 【文献调研】多模生理信号融合方法研究(主脑电)
  7. 手机相册功能,支持多选,选中列表以及选中状态,简洁
  8. 西电计算机学院嵌入式期末考试题,西电 嵌入式大作业
  9. mac无法访问服务器的共享文件,如何使用Mac上的“文件共享”进行连接
  10. 【无标题】graphsage--inductive representation learing on large graphs