开辟两个链表分别存放小于和大于等于x的结点
代码
class Solution {
public:
ListNode *partition(ListNode *head, int x) {
if(head==NULL)
return head;
ListNode * smallHead = new ListNode(0);
ListNode * bigHead = new ListNode(0);
ListNode * p = head;
ListNode *q1, *q2;
q1 = smallHead;
q2 = bigHead;
while(p!=NULL)
{
ListNode * tempNode = new ListNode(p->val);
if(p->val<x)
{
q1->next = tempNode;
q1 = tempNode;
}
else
{
q2->next = tempNode;
q2 = tempNode;
}
p = p->next;
}
q1 = smallHead;
while(q1->next!=NULL)
q1 = q1->next;
q1->next = bigHead->next;
return smallHead->next;
}
};