题解 | #链表分割#

链表分割

https://www.nowcoder.com/practice/0e27e0b064de4eacac178676ef9c9d70

解题思路:分成两个链表,一个放比比x小的数,另一个放比x大等于的数,最后将两个数组合到一起。一定要放哨兵位,带头节点的会比较简单。最后返回
class Partition 
{
public:
    ListNode* partition(ListNode* pHead, int x) 
    {
        struct ListNode* list1head,*list1tail,*list2head,*list2tail;//定义两组链表
        list1head=list1tail=( struct ListNode*)malloc(sizeof( struct ListNode));//开辟空间
        list2head=list2tail=( struct ListNode*)malloc(sizeof( struct ListNode));
        list1tail->next=list2tail->next=NULL;
         struct ListNode* cur=pHead;
         while(cur)
         {
             if(cur->val< x)//把比x小的数放在listhead链表里
             {
                 list1tail->next=cur;
                 list1tail=list1tail->next;
             }
             else//把比x大的数放在listhead链表里
             {
                 list2tail->next=cur;
                 list2tail=list2tail->next;
             }
           cur=cur->next;
         }
         list2tail->next=NULL;
         list1tail->next=list2head->next;//组合两个链表
         return list1head->next;
    }     
};

全部评论

相关推荐

07-03 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
下个早班:秒挂就是不缺人
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务