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

提交结果:

相关内容

热门资讯

辅助透视!aapoker破解侠... 辅助透视!aapoker破解侠是真的吗,aapoker透视插件,2025新版(有挂解说)1、辅助透视...
透视黑科技!wepoker底牌... 透视黑科技!wepoker底牌透视(透视)一直是有挂(系统教程);1、wepoker底牌透视ai辅助...
透视肯定!aapoker插件,... 透视肯定!aapoker插件,aapoker透视脚本入口,微扑克教程(有挂脚本);1、进入到aapo...
透视辅助!aapoker公共底... 透视辅助!aapoker公共底牌,aapoker透视脚本入口,2025新版教程(有挂教程)1、打开软...
透视游戏!wepoker永久免... 透视游戏!wepoker永久免费脚本(透视)原来存在有挂(必赢教程)1、构建自己的wepoker永久...
广东雀神智能辅助照片,兴化打两... 广东雀神智能辅助照片,兴化打两圈辅助器,微信小程序边锋辅助攻略1、完成广东雀神智能辅助照片的残局,帮...
透视ai代打!aapoker辅... 透视ai代打!aapoker辅助器是真的吗,aapoker插件下载,插件教程(有挂方法)1、让任何用...
透视能赢!wepoker作弊方... 透视能赢!wepoker作弊方法(透视)确实是有挂(总结教程)1、超多福利:超高返利,海量正版游戏,...
广东雀神挂件去那买,广西友乐辅... 广东雀神挂件去那买,广西友乐辅助app,财神13张辅助系统解密1、在广东雀神挂件去那买ai机器人技巧...
透视透视!aapoker发牌逻... 透视透视!aapoker发牌逻辑,aapoker万能辅助器,微扑克教程(有挂解密)1、aapoker...