题目考查的知识点
题目解答方法的文字解析
- 遍历一遍链表,将链表分组,小于x为一组,记为A。其余的为另一组,记为B。
- 将B组拼接到A组的后面,B组最后一个节点的next置空。
本题解析所用的编程语言
完整且正确的编程代码
class Solution {
public:
ListNode* cow_partition(ListNode* head, int x) {
ListNode small = ListNode(-1), large = ListNode(-1);
ListNode*ps = &small, *pl = &large;
ListNode*phead = head;
// 将链表分组,小于x为一组,记为A。其余的为另一组,记为B。
while(phead){
if(phead->val<x){
ps->next = phead;
ps = ps->next;
}else{
pl->next = phead;
pl = pl->next;
}
phead = phead->next;
}
// 将B组拼接到A组的后面,B组最后一个节点的next置空
ps->next = large.next;
pl->next = nullptr;
return small.next;
}
};