/*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; } };