单链表算法 - 链表分割
创始人
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;     } };

提交结果:

相关内容

热门资讯

推荐一款!透视辅助功能插件,游... 推荐一款!透视辅助功能插件,游戏辅助神器app,新版2025教程(有挂工具)1、透视辅助功能插件透视...
玩家必看教程!epoker底牌... 玩家必看教程!epoker底牌透视,pokerworld修改器,揭秘教程(有挂解密);最新版2026...
玩家攻略推荐!wepoker怎... 玩家攻略推荐!wepoker怎么挂飞机-详细开挂透视辅助器(确实有开挂);1.wepoker怎么挂飞...
透视透视!小闲川南宜宾辅助,小... 透视透视!小闲川南宜宾辅助,小程序牵手跑得辅助,大神讲解(有挂分析);透视透视!小闲川南宜宾辅助,小...
关于!陕麻圈破解,海螺众娱辅助... 关于!陕麻圈破解,海螺众娱辅助脚本,微扑克教程(真的有挂)海螺众娱辅助脚本辅助器中分为三种模型:海螺...
一分钟揭秘!hhpoker辅助... 一分钟揭秘!hhpoker辅助挂下载,哈糖大菠萝有挂吗,2025教程(有挂规律);超受欢迎的哈糖大菠...
一分钟教你!wepoker轻量... 一分钟教你!wepoker轻量版透视方法-详细开挂透视辅助插件(有开挂工具);wepoker轻量版透...
透视挂!全民比鸡bug,随意玩... 您好:随意玩俱乐部辅助这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌...
今日百科!潮汕掌手娱辅助器,微... 今日百科!潮汕掌手娱辅助器,微信小程序蜀山四川辅助器,必胜教程(有挂技巧)1、很好的工具软件,可以解...
推荐一款!wepoker模拟器... 推荐一款!wepoker模拟器哪个好用,wepoker开脚本视频,科技教程(有挂头条);1、不需要A...