/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};*/
class Partition {
public:
ListNode* partition(ListNode* pHead, int x) {
ListNode* less, *greater, *cur = pHead;
//创建两个哨兵节点
less = (ListNode*)malloc(sizeof(ListNode));
greater = (ListNode*)malloc(sizeof(ListNode));
//用small,bigger分别保留哨兵节点
ListNode* small = less, *bigger = greater;
while(cur)
{
if(cur->val < x)
{
less->next = cur;
less = less->next;
}
else
{
greater->next = cur;
greater = greater->next;
}
cur = cur->next;
}
//进行拼接
greater->next = NULL;//防止环形
less->next = bigger->next;//链接
pHead = small->next;//要返回的头结点
free(small);
free(bigger);
return pHead;
}
};