题解 | #链表分割#

链表分割

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;
    }     
};

全部评论

相关推荐

比亚迪汽车新技术研究院 硬件工程师 总包21左右 硕士
点赞 评论 收藏
分享
10-04 17:25
门头沟学院 Java
snqing:Java已经饱和了,根本不缺人。随便一个2000工资的都200人起投递
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务