单链表算法 - 链表分割
创始人
2025-01-10 06:37:46
0

链表分割_牛客题霸_牛客网现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的。题目来自【牛客题霸】icon-default.png?t=N7T8https://www.nowcoder.com/practice/0e27e0b064de4eacac178676ef9c9d70思路:

代码:

/* 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 here         //创建两个非空链表:小链表和大链表         ListNode* lesstHead,*lesstTail;         lesstHead = lesstTail = (ListNode*)malloc(sizeof(ListNode));          ListNode* greaterHead,*greaterTail;         greaterHead = greaterTail = (ListNode*)malloc(sizeof(ListNode));         //创建临时变量来遍历原数组         ListNode* prev = pHead;         while(prev)         {             //判断当前节点是否小于x             if(prev->val < x)             {                 //插入到小链表中                 lesstTail->next = prev;                 lesstTail = lesstTail->next;             }             else             {                 //插入到大链表中                 greaterTail->next = prev;                 greaterTail = greaterTail->next;             }             prev = prev->next;         }         //退出循环原链表遍历完成         //连接两个链表         lesstTail->next = greaterHead->next;         ListNode* ret = lesstHead->next;         free(lesstHead);         lesstHead = NULL;         free(greaterHead);         greaterHead = NULL;         return ret;     } };

提交结果:

当我们提交代码之后代码有问题,那么代码到底哪里的逻辑不合适呢?我们画图看一下。

/* 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 here         //创建两个非空链表:小链表和大链表         ListNode* lesstHead,*lesstTail;         lesstHead = lesstTail = (ListNode*)malloc(sizeof(ListNode));          ListNode* greaterHead,*greaterTail;         greaterHead = greaterTail = (ListNode*)malloc(sizeof(ListNode));         //创建临时变量来遍历原数组         ListNode* prev = pHead;         while(prev)         {             //判断当前节点是否小于x             if(prev->val < x)             {                 //插入到小链表中                 lesstTail->next = prev;                 lesstTail = lesstTail->next;             }             else             {                 //插入到大链表中                 greaterTail->next = prev;                 greaterTail = greaterTail->next;             }             prev = prev->next;         }         //将大链表的尾节点的next指针置为NULL         greaterTail->next = NULL;         //连接两个链表         lesstTail->next = greaterHead->next;         ListNode* ret = lesstHead->next;         free(lesstHead);         lesstHead = NULL;         free(greaterHead);         greaterHead = NULL;         return ret;     } };

提交结果:

相关内容

热门资讯

2分钟开挂!pokermast... 2分钟开挂!pokermaster修改器,哈糖大菠萝怎么开挂,攻略教程(确实有挂)-哔哩哔哩;亲真的...
三分钟带你发现!天天飞小鸡辅助... 三分钟带你发现!天天飞小鸡辅助,蜀山四川辅助脚本,科技教程(有挂工具)-哔哩哔哩;亲,蜀山四川辅助脚...
5分钟带你辅助!新道游app辅... 赣牌圈小程序破解版开挂教程视频分享装挂详细步骤在当今的网络游戏中,赣牌圈小程序破解版作为一种经典的娱...
6分钟知晓!川南九九辅助,wp... 6分钟知晓!川南九九辅助,wpk插件,解密教程(有挂工具)-哔哩哔哩;川南九九辅助是一款益智类棋牌手...
第九分钟带你透视!上饶中至辅助... 第九分钟带你透视!上饶中至辅助软件如何设置,新二号辅助下载,教你攻略(有挂神器)-哔哩哔哩 【无需打...
八分钟指导!智星德州插件最新版... 八分钟指导!智星德州插件最新版本更新内容详解,约局吧开挂神器是真的吗,必胜教程(有挂实锤)-哔哩哔哩...
两分钟带你透视!微信小程序大贰... 两分钟带你透视!微信小程序大贰辅助工具,家乡大二辅助,透明挂教程!(有挂解密)-哔哩哔哩1、下载安装...
5分钟了解!微信微乐辅助ios... 5分钟了解!微信微乐辅助ios,hhpoker是正规的吗,系统教程(的确有挂)-哔哩哔哩;微信微乐辅...
第四分钟带你开挂!大菠萝辅助器... 第四分钟带你开挂!大菠萝辅助器,乾坤互娱辅助,揭秘攻略(有挂实锤)-哔哩哔哩;无需打开直接搜索打开薇...
7分钟了解!线上德州的辅助器是... 7分钟了解!线上德州的辅助器是什么,wepokerplus万能挂,靠谱教程(了解有挂)-哔哩哔哩;一...