1.解题思路
此题目思路相对简单,利用双指针,一个指针指向小于val的,一个指针指向大于等于val的,但实现起来,如果仅仅使用单链表,那么还需特别判断第一个指针是否为空从而特意做出特别处理,但如果使用头结点,这样的情况就能被避免,因此使用头结点要相对简单,循环后再将第一个链表与第二个链表相连接就能得到想要的链表
2.代码实现
class Partition {
public:
ListNode* partition(ListNode* pHead, int x)
{
ListNode* p1=( ListNode*)malloc(sizeof(ListNode));
ListNode* p2=( ListNode*)malloc(sizeof(ListNode));
ListNode*p1Head=p1;
ListNode*p2Head=p2;
ListNode* cur=pHead;
while(cur)
{
if(cur->val<x)
{
p1->next=cur;
p1=p1->next;
cur=cur->next;
}
else
{
p2->next=cur;
p2=p2->next;
cur=cur->next;
}
}
p2->next=NULL;
p1->next=p2Head->next;
return p1Head->next;
}
};
结尾:今天的分享到此结束,喜欢的朋友如果感觉有帮助可以点赞三连支持,咱们共同进步!