/*#include <stdio.h>
#include <stdlib.h>
struct ListNode
{
int val;
ListNode* next;
ListNode(int x) :val(x), next(NULL){
}
};
class Solution
{
public:
ListNode* partionNode(ListNode* head, int x){
ListNode less_head(0);
ListNode more_head(0);
ListNode* less_ptr = &less_head;
ListNode* more_ptr = &more_head;
while (head)
{
if (head->val<x)
{
less_ptr->next = head;
less_ptr = head;
}
else
{
more_ptr->next = head;
more_ptr = head;
}
head = head->next;
}
less_ptr->next = more_head.next;
more_ptr->next = NULL;//将more_ptr即链表尾结点置为空
return less_head.next;
}
};
int main()
{
ListNode a(1);
ListNode b(4);
ListNode c(3);
ListNode d(2);
ListNode e(5);
ListNode f(2);
a.next = &b;
b.next = &c;
c.next = &d;
d.next = &e;
e.next = &f;
Solution s;
ListNode* head = s.partionNode(&a, 3);
while (head)
{
printf("%d\n", head->val);
head = head->next;
}
system("pause");
return 0;
} */
//链表的划分
#include <stdio.h>
#include <stdlib.h>
struct ListNode
{
int val;
ListNode* next;
ListNode(int x) :val(x), next(NULL){
}
};
class Solution
{
public:
ListNode* partion(ListNode*head, int x){
ListNode less_head(0);
ListNode more_head(0);
ListNode* less_ptr = &less_head;
ListNode* more_ptr = &more_head;
while (head)
{
if (head->val<x)
{
less_ptr->next = head;
less_ptr = less_ptr->next;
}
else
{
more_ptr->next = head;
more_ptr = more_ptr->next;
}
head = head->next;
}
more_ptr->next = NULL;
less_ptr->next = more_head.next;
return less_head.next;
}
private:
};
int main()
{
ListNode a(1);
ListNode b(4);
ListNode c(3);
ListNode d(2);
ListNode e(5);
ListNode f(2);
a.next = &b;
b.next = &c;
c.next = &d;
d.next = &e;
e.next = &f;
Solution s;
ListNode* head = s.partion(&a, 3);
while (head)
{
printf("%d\n", head->val);
head = head->next;
}
system("pause");
return 0;
}
来源:CSDN
作者:guoshaobao
链接:https://blog.csdn.net/m0_37787950/article/details/80115448