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

提交结果:

相关内容

热门资讯

推荐几款新版!hh poker... 推荐几款新版!hh poker辅助器先试用,乐乐川南茶馆辅助,好像存在有辅助开挂(有挂规律)1、每一...
一分钟了解!wpk软件是正规的... 一分钟了解!wpk软件是正规的吗,小二互娱辅助,果然真的有辅助透视(有人有挂)1、小二互娱辅助有没有...
一分钟揭秘!佛手在线有挂吗,熊... 一分钟揭秘!佛手在线有挂吗,熊猫辅助器视频教程,好像存在有辅助开挂(有挂方法)1、进入到熊猫辅助器视...
一分钟揭秘!hhpoker透视... 一分钟揭秘!hhpoker透视工具,广西友乐辅助app,真是存在有辅助脚本(有挂解密)1.广西友乐辅...
终于知道!wpk俱乐部怎么作必... 终于知道!wpk俱乐部怎么作必弊,吉祥填大坑脚本小程序,一直是有辅助脚本(了解有挂)吉祥填大坑脚本小...
揭秘几款!德州圈脚本,佛手在线... 揭秘几款!德州圈脚本,佛手在线辅助,一直真的有辅助插件(发现有挂)1、在佛手在线辅助插件功能辅助器技...
专业讨论!wpk显示有作必弊,... 专业讨论!wpk显示有作必弊,丰城呱呱辅助器,总是存在有辅助神器(有挂总结)1、每一步都需要思考,不...
查到实测辅助!hhpoker辅... 查到实测辅助!hhpoker辅助挂下载,微信小程序微乐辅助器破解版,本来真的是有辅助透视(有挂方法)...
详细说明!wepoker作必弊... 详细说明!wepoker作必弊视频,禅游辅助,好像是有辅助下载(新版有挂)1、下载好禅游辅助脚本下载...
科普分享!wepoker的辅助... 科普分享!wepoker的辅助器,皇豪互众辅助软件是干嘛的,果然是有辅助神器(有挂秘籍)皇豪互众辅助...