Very simple C++ solution: best solution?


#1
ListNode* Solution::solve(ListNode* A) {
    ListNode* temp=A;
    while(temp->next!=NULL)
    {
        if(temp->next->val==0)
        {
            ListNode* temp1=temp->next;
            temp->next=temp1->next;
            temp1->next=A;
            A=temp1;
            if(temp->next!=NULL && temp->next->val==1) temp=temp->next;
        }
        else temp=temp->next;
    }
    return A;
}