分析:只要把比x小的节点按顺序连成一条链,比x大或等于x的节点连成另一条链,然后把两条链连起来。注意一下边界情况(某条链为空)。另外,需要调整一下做题目的心态,遇到一些蛋疼或者看着麻烦的题目,一定不要有畏惧心态,要有心平气和地把一件事给做好的心态,切记切记。代码如下:
class Solution {
public:
ListNode* partition(ListNode* head, int x) {
ListNode* lessNode = new ListNode(-1);
ListNode* greatNode = new ListNode(0);
ListNode* less = lessNode, *great = greatNode, *cur = head;
while (cur) {
if (cur->val<x) {
less->next = cur;
less = less->next;
} else {
great->next = cur;
great = great->next;
}
cur = cur->next;
}
less->next = greatNode->next;
great->next = NULL;
return lessNode->next;
}
};