newcoder【链表分割】
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【链表分割】相关推荐
- 【Java】牛客网 链表分割
题目描述 : 现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针. 解题思路 : 假 ...
- 《剑指offer》链表分割
题目:编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针.注意:分割以后保持 ...
- 链表:链表分割问题:以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前
链表分割: 以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前,注意:数据的顺序不改变. 代码实现: 链表的定义: typedef int SListDataType; t ...
- [数据结构]题海啊,全是水(三)链表中倒数第k个节点、链表的回文结构、链表分割
这是一个目录 链表中倒数第k个节点 解法一 解法二 链表的回文结构 思路 代码 链表分割 思路 代码 最后 菜鸡大学生的数据结构--刷题篇3 我们的第三题小宝贝儿回归了! 菜鸡大学生明白,笔试oj题目 ...
- python 链表分割
题目描述 编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针.注意:分割以后 ...
- 以给定值x为基准将链表分割成两部分
分析: 题目要求将链表以x为基准分成两部分,但并不是真的将链表分成两个链表,同时在分割后,不能改变原先链表的顺序,具体分析步骤如下: 首先我们定义一个cur去遍历链表的每一个节点,找出所有小于x的结点 ...
- 链表面试题2:编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前
我们可以,用两个新链表,一个存比基准值大的,另一个存比基准值小的.然后再拼接在一起. 用尾插的方法,首先说小的,创建两个指针,一个头,一个尾,再创建个指针跑链表,扫描每一个结点,如果里的值小,存入小链 ...
- 程序员面试金典——2.4链表分割
Solution1 链表问题要学会利用头结点,返回时把头结点去掉即可,代码比较简练. 参考网址:https://www.nowcoder.com/profile/188146/codeBookDeta ...
- 已知由一个线性链表表示的线性表中含有 3 类字符的数据元素(如:字母,数字和其他字符),试编写算法将该线性链表分割为 3 个循环链表,其中每个循环链表均只含有一类字符。
先封装一个单链表LA,引用Creat()函数利用尾插法来生成链表,先输入n值来确定单链表中数据元素的个数,然后通过键盘输入元素,创建3个空链表来存放三种不同字符类型,通过Match()中的ASCII码 ...
最新文章
- sql2008 cet查询 所有层级_案例 | CET助力一汽实现动力设备系统智慧管理
- C语言 字符串相关的函数
- %rowtype mysql_Oracle %type和%rowtype小实例
- python案例源码_【python】python实例集一
- 佟年计算机天才不会打游戏,《亲爱的热爱的》佟年爱得卑微?其实是韩商言,爱得不够勇敢...
- java编程_Java编程和C语言的比较
- Python使用多进程批量判断素数
- OneinStack一键安装tomcat,jdk,mysql到Linux
- ztree 自定义参数_jQuery Ztree基本用法
- abb变频器dp适配器说明书_PROFIBUS-DP与ABB变频器之间通讯设置步骤
- 各个浏览器的详细信息
- xmr-stak-cpu 安装及使用
- USACO 2019 February Contest Platinum T3: Mowing Mischief
- 《深入理解计算机系统》Lab2-Bomblab
- Spring Boot资源获取失败:class path resource cannot be opened because it does not exist
- 软件测试笔记——3.多种多样的测试类型
- alicloud linux3安装Jdk和Maven
- 如何在配置低的老旧笔记本的win7系统上安装tensorflow及报错信息解决方法集锦
- HashMap灵魂26问
- python 打包exe_python pyinstaller打包exe报错的解决方法
热门文章
- 计算机计磁盘术语,计算机术语-磁盘
- 那该如何修改上述代码
- Python实现微信发送文件实例
- 威马汽车欲曲线上市:沈晖已提前持股并任职,销量垫底、员工降薪
- c语言NULL和0区别及NULL详解
- 【机器学习算法模型】1. SVR模型推导
- Android Studio App开发之使用摄像机录制视频和从视频库中选取视频的讲解及实战(附源码)
- 广西大学研究生有计算机专业吗,广西大学研究生的专业有哪些
- 如何打开mysql odbc数据源_mysql是如何配置ODBC数据源的方法
- w10备份系统无法启动服务器,Win10 备份应用程序无法启动 0x80070424 指定服务未安装 的解决方法!...