目录
1,题目介绍
2,代码
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};*/
class Partition {
public:
ListNode* partition(ListNode* pHead, int x) {
// write code here
struct ListNode*head1,*head2,*tail1,*tail2;
head1=tail1=(struct ListNode*)malloc(sizeof(struct ListNode));
head2=tail2=(struct ListNode*)malloc(sizeof(struct ListNode));
tail1->next=NULL;
tail2->next=NULL;
struct ListNode* cur=pHead;
while(cur)
{
if(cur->val<x) //如果这里写>的话只能写成>=,题目要求小于的反方向就是
{ //大于等于,而不是大于。
tail1->next=cur;
tail1=tail1->next;
}else
{
tail2->next=cur;
tail2=tail2->next;
}
cur=cur->next;
}
tail1->next=head2->next;
tail2->next=NULL;//不然会在尾部形成*******环**************
pHead=head1->next;
free(head1);
free(head2);
return pHead;
}
};
3,画图解释带环
此图以5为分界线
不注意细节就会形成带环。