/*struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};*/
class Partition {
public:
ListNode* partition(ListNode* pHead, int x) {
if (pHead == nullptr)
{
return nullptr;
}
ListNode* pTempGreater = new ListNode(0);
ListNode* pTempLess = new ListNode(0);
ListNode* pTempGreaterCopy = pTempGreater;
ListNode* pTempLessCopy = pTempLess;
for (ListNode* n = pHead; n != nullptr; n = n->next)
{
if (n->val >= x)//大于val的部分 放在后面
{
pTempGreater ->next= new ListNode(n->val);//构造一个节点 然后粘贴到链上去,仅仅复制值
pTempGreater = pTempGreater->next;
}
else
{
pTempLess->next = new ListNode(n->val);
pTempLess = pTempLess->next;
}
}
pTempLess->next = pTempGreaterCopy->next;
return pTempLessCopy->next;
}
};