解题方法:双指针法
ListNode *partition(ListNode *head, int x)
{
ListNode *head1 = new ListNode(0);
ListNode *head2 = head1;
ListNode *head3 = new ListNode(0);
ListNode *head4 = head3;
while (head!= nullptr)
{
if (head->val < x)
{
head1->next = head;
head = head->next;
head1=head1->next;
}
else
{
head3->next = head;
head = head->next;
head3=head3->next;
}
}
head3->next=nullptr;
head1->next=head4->next;
return head2->next;
}
关键点:在迭代中,指针指向的地址是一直在迭代的,但是最后一个节点需要指向空指针。
head3->next=nullptr;
head1->next=head4->next;