/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* partition(ListNode* head, int x) {
//创建两个节点,用于保存小于x的值以及大于等于x的值
ListNode *before=new ListNode(0);//之前的错误是没有在这里进行初始化操作,导致野指针
ListNode *after=new ListNode(0);
//创建两个指针指向新节点
ListNode *p1=before;
ListNode *p2=after;
if(!head)
{
return head;
}
//遍历链表,<x的值在before前面,反之则在后面
while(head)
{
//比较当前头结点的值与x的关系
if(head->val<x)
{
p1->next=head;
head=head->next;
p1=p1->next;
}
else
{
p2->next=head;
head=head->next;
p2=p2->next;
}
}
p2->next=NULL;
p1->next=after->next;
return before->next;
}
};
LeetCode:86.分隔链表:这种类型的习题需要设置头结点,并必须将头结点初始化
最新推荐文章于 2023-01-19 18:55:07 发布