题解 | #链表分割#
链表分割
https://www.nowcoder.com/practice/0e27e0b064de4eacac178676ef9c9d70
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};*/
//哨兵节点方法的好处在于可以统一进行尾插操作
class Partition
{
public:
ListNode* partition(ListNode* pHead, int x)
{
ListNode * temphead = pHead;
auto watcher1 = new ListNode(0);
auto watcher2 = new ListNode(0);
ListNode * temwat1 = watcher1;
ListNode * temwat2 = watcher2;
while(temphead)
{
if(temphead->val<x)
{
temwat1->next = temphead;
temwat1=temwat1->next;
temphead=temphead->next;
}
else
{
temwat2->next = temphead;
temwat2 = temwat2->next;
temphead = temphead->next;
}
}
temwat1->next = watcher2->next;
temwat2->next = nullptr;
return watcher1->next;
}
};
两个哨兵节点尾插法轻松搞定


