86. 分隔链表

86. 分隔链表


题目链接:86. 分隔链表

代码如下:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* partition(ListNode* head, int x) {
        if(head==nullptr||head->next==nullptr)
            return head;

        ListNode *Head1=new ListNode;
        Head1->next=head;
        ListNode *p=Head1;

        ListNode* Head2=new ListNode;
        Head2->next=nullptr;
        ListNode *r=Head2;

        //进行分开存储
        while(p->next)
        {
            if(p->next->val>=x)
            {
                ListNode *temp=p->next;
                p->next=temp->next;

                temp->next=r->next;
                r->next=temp;
                r=temp;
            }
            else
                p=p->next;
        }

        //进行连接即可
        p->next=Head2->next;    
        return Head1->next;
    }
};

你可能感兴趣的:(leetcode,链表,c++)