newcoder【链表分割】

题目描述:
编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前。
给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。
来源:牛客(newcoder)
链接:https://www.nowcoder.com/practice/0e27e0b064de4eacac178676ef9c9d70?tpId
思路:
给定一个指针cur,如果cur->val<x,把cur指向的元素存入lesshead,如果cur->val>x,
把cur指向的元素存入greaterhead,遍历完后让lesstail->next=greaterhead->next。
代码实现:

/*
struct ListNode {int val;struct ListNode *next;ListNode(int x) : val(x), next(NULL) {}
};*/
class Partition {
public:ListNode* partition(ListNode* pHead, int x) {// write code hereif(pHead == NULL)return NULL;struct ListNode* lessHead, *lessTail,*greaterHead, *greaterTail;lessHead = lessTail = (struct ListNode*)malloc(sizeof(struct ListNode));greaterHead = greaterTail = (struct ListNode*)malloc(sizeof(struct ListNode));struct ListNode* cur = pHead;while(cur){if(cur->val < x){lessTail->next = cur;lessTail = lessTail->next;}else{greaterTail->next = cur;greaterTail = greaterTail->next;}cur = cur->next;}lessTail->next = greaterHead->next;greaterTail->next = NULL;pHead = lessHead->next;free(lessHead);free(greaterHead);return pHead;}
};

环境:
c语言

newcoder【链表分割】相关推荐

  1. 【Java】牛客网 链表分割

    题目描述 : 现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针. 解题思路 : 假 ...

  2. 《剑指offer》链表分割

    题目:编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针.注意:分割以后保持 ...

  3. 链表:链表分割问题:以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前

    链表分割: 以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前,注意:数据的顺序不改变. 代码实现: 链表的定义: typedef int SListDataType; t ...

  4. [数据结构]题海啊,全是水(三)链表中倒数第k个节点、链表的回文结构、链表分割

    这是一个目录 链表中倒数第k个节点 解法一 解法二 链表的回文结构 思路 代码 链表分割 思路 代码 最后 菜鸡大学生的数据结构--刷题篇3 我们的第三题小宝贝儿回归了! 菜鸡大学生明白,笔试oj题目 ...

  5. python 链表分割

    题目描述 编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针.注意:分割以后 ...

  6. 以给定值x为基准将链表分割成两部分

    分析: 题目要求将链表以x为基准分成两部分,但并不是真的将链表分成两个链表,同时在分割后,不能改变原先链表的顺序,具体分析步骤如下: 首先我们定义一个cur去遍历链表的每一个节点,找出所有小于x的结点 ...

  7. 链表面试题2:编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前

    我们可以,用两个新链表,一个存比基准值大的,另一个存比基准值小的.然后再拼接在一起. 用尾插的方法,首先说小的,创建两个指针,一个头,一个尾,再创建个指针跑链表,扫描每一个结点,如果里的值小,存入小链 ...

  8. 程序员面试金典——2.4链表分割

    Solution1 链表问题要学会利用头结点,返回时把头结点去掉即可,代码比较简练. 参考网址:https://www.nowcoder.com/profile/188146/codeBookDeta ...

  9. 已知由一个线性链表表示的线性表中含有 3 类字符的数据元素(如:字母,数字和其他字符),试编写算法将该线性链表分割为 3 个循环链表,其中每个循环链表均只含有一类字符。

    先封装一个单链表LA,引用Creat()函数利用尾插法来生成链表,先输入n值来确定单链表中数据元素的个数,然后通过键盘输入元素,创建3个空链表来存放三种不同字符类型,通过Match()中的ASCII码 ...

最新文章

  1. sql2008 cet查询 所有层级_案例 | CET助力一汽实现动力设备系统智慧管理
  2. C语言 字符串相关的函数
  3. %rowtype mysql_Oracle %type和%rowtype小实例
  4. python案例源码_【python】python实例集一
  5. 佟年计算机天才不会打游戏,《亲爱的热爱的》佟年爱得卑微?其实是韩商言,爱得不够勇敢...
  6. java编程_Java编程和C语言的比较
  7. Python使用多进程批量判断素数
  8. OneinStack一键安装tomcat,jdk,mysql到Linux
  9. ztree 自定义参数_jQuery Ztree基本用法
  10. abb变频器dp适配器说明书_PROFIBUS-DP与ABB变频器之间通讯设置步骤
  11. 各个浏览器的详细信息
  12. xmr-stak-cpu 安装及使用
  13. USACO 2019 February Contest Platinum T3: Mowing Mischief
  14. 《深入理解计算机系统》Lab2-Bomblab
  15. Spring Boot资源获取失败:class path resource cannot be opened because it does not exist
  16. 软件测试笔记——3.多种多样的测试类型
  17. alicloud linux3安装Jdk和Maven
  18. 如何在配置低的老旧笔记本的win7系统上安装tensorflow及报错信息解决方法集锦
  19. HashMap灵魂26问
  20. python 打包exe_python pyinstaller打包exe报错的解决方法

热门文章

  1. 计算机计磁盘术语,计算机术语-磁盘
  2. 那该如何修改上述代码
  3. Python实现微信发送文件实例
  4. 威马汽车欲曲线上市:沈晖已提前持股并任职,销量垫底、员工降薪
  5. c语言NULL和0区别及NULL详解
  6. 【机器学习算法模型】1. SVR模型推导
  7. Android Studio App开发之使用摄像机录制视频和从视频库中选取视频的讲解及实战(附源码)
  8. 广西大学研究生有计算机专业吗,广西大学研究生的专业有哪些
  9. 如何打开mysql odbc数据源_mysql是如何配置ODBC数据源的方法
  10. w10备份系统无法启动服务器,Win10 备份应用程序无法启动 0x80070424 指定服务未安装 的解决方法!...