解题思路:使用两个节点保存切分后的俩链表。最后再合并到一起。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* partition(ListNode* head, int x){
ListNode *small = new ListNode(0);
ListNode *big = new ListNode(0);
ListNode *ps = small,*pb = big;
ListNode *cur = head;
while(cur){
if(cur->val < x){
ps->next = cur;
cur = cur->next;
ps = ps->next;
ps->next=NULL;
}else{
pb->next = cur;
cur = cur->next;
pb = pb->next;
pb->next=NULL;
}
}
ps->next = big->next;
head = small->next;
delete small;
delete big;
return head;
}
};