class Solution {
public:
ListNode* partition(ListNode* head, int x) {
if (head==nullptr||head->next==nullptr) return head;
ListNode big;
ListNode small;
ListNode *p=head;
ListNode *pb=&big;
ListNode *ps=&small;
ListNode *q=nullptr;
while(p){
q=p->next;
if((p->val)<x){
p->next=pb->next;
pb->next=p;
pb=p;
}
else{
p->next=ps->next;
ps->next=p;
ps=p;
}
p=q;
}
pb->next=small.next;
return big.next;
}
};
思路:新建big small 两个链表 一个存储小于x的结点,另一个存储大于X的结点,最后再接起来