文章目录
LeetCode-86 分隔链表
题目:给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。
设置两个头指针,小于的插入下面链表,大的插入上面链表
得到两条单链表,再连接两条链表即可
class Solution {
public:
ListNode* partition(ListNode* head, int x) {
ListNode r1, r2, *p1 = &r1, *p2 = &r2, *p = head,*q;
// p1 指向r1链表的末尾结点
// p2 指向r2链表的末尾结点
while(p){
q = p->next;
if(p->val < x){//将P放到P1末尾
p->next = p1->next;
p1->next = p;
p1 = p;
}else{//将P放到P2末尾
p->next = p2->next;
p2->next = p;
p2 = p;
}
p = q;
}
p1->next = r2.next;
return r1.next;
}
};