/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};*/
#include <cstddef>
class Partition
{
public:
ListNode* partition(ListNode* pHead, int x)
{
// write code here
struct ListNode* head1, *tail1, *head2, *tail2;
head1=tail1=(struct ListNode*)malloc(sizeof(struct ListNode));
head2=tail2=(struct ListNode*)malloc(sizeof(struct ListNode));
struct ListNode* cur = pHead;
while (cur)
{
if (cur->val >= x)
{
tail2->next = cur;
tail2 = tail2->next;
}
else
{
tail1->next = cur;
tail1 = tail1->next;
}
cur = cur->next;
}
tail2->next = NULL;
tail1->next = head2->next;
pHead=head1->next;
free(head1);
free(head2);
return pHead;
}
};