链接: https://oj.leetcode.com/problems/partition-list/
双重指针......
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution
{
public:
ListNode *partition(ListNode *head,int x)
{
ListNode **t1,**t2;
ListNode *ans1=NULL,*ans2=NULL;
bool s1,s2;
if(head==NULL)
return ans1;
for(s1=true,s2=true;head!=NULL;head=head->next)
{
ListNode *t=NULL;
if(head->val<x)
{
if(s1)
{
t=new ListNode(head->val);
t1=&t;
ans1=t;
s1=false;
}
else
{
*t1=new ListNode(head->val);
}
t1=&((*t1)->next);
}
else
{
if(s2)
{
t=new ListNode(head->val);
t2=&t;
ans2=t;
s2=false;
}
else
{
*t2=new ListNode(head->val);
}
t2=&((*t2)->next);
}
}
if(s1)
return ans2;
if(s2)
return ans1;
*t1=ans2;
return ans1;
}
};