/* 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 ListNode* Bighead,*Bigtail; ListNode* Lesshead,*Lesstail; Lesshead = Lesstail = (ListNode*)malloc(sizeof(ListNode)); Bighead = Bigtail = (ListNode*)malloc(sizeof(ListNode)); ListNode* pcur = pHead; while(pcur) { if(pcur->val < x) { Lesstail->next = pcur; Lesstail = Lesstail->next; } else { Bigtail->next = pcur; Bigtail = Bigtail->next; } pcur = pcur->next; } Bigtail->next = NULL; Lesstail->next = Bighead->next; return Lesshead->next; } };