面试题02.04.分割链表

小于给定元素的放前面,大于给定元素的放后面
新建两个链表进行操作

ListNode* partition(ListNode* head, int x) {
    if(head == nullptr)
        return nullptr;
    
    ListNode *cur = head;
    ListNode *l = new ListNode(0);
    ListNode *s = new ListNode(0);
    ListNode *ll = l;
    ListNode *ss = s;
    while(cur)
    {
        if(cur->val >= x)
        {
            ll->next = cur;
            ll = ll->next;
            cur = cur->next;
            ll->next = nullptr;
        }
        else
        {
            ss->next = cur;
            ss = ss->next;
            cur = cur->next;
            ss->next = nullptr;
        }
    }
    ss->next = l->next;
    return s->next;
}
posted @ 2020-07-14 18:09  Akmf's_blog  阅读(43)  评论(0)    收藏  举报