先找到第一个大于等于target的数p,然后从这个数开始往后遍历链表,若比target小则放在p之前
ListNode* partition(ListNode* head, int x) {
ListNode* dummy = new ListNode(-1);
dummy->next = head;
ListNode *p = dummy;
ListNode *q = head;
while(p->next&&p->next->val<x)p=p->next;
q = p;
while(q->next)
{
if(q->next->val<x)
{
ListNode* tem = q->next;
q->next = tem->next;
tem->next = p->next;
p->next = tem;
p = tem;
}
else q=q->next;
}
return dummy->next;
}