#include<iostream>
#include"ListNode.h"
//把链表分为大于x和小于x的部分
class Solution{
public:
ListNode* partitionList(ListNode* head, int x){
//定义两个临时指针,两个临时节点用来保持索引
ListNode a(0);
ListNode b(0);
ListNode* less = &a;
ListNode* more = &b;
while(head){
if(head->val < x ){
less->next = head;
less = less->next; // 或者 less = head;
}else{
more->next = head;
more = more->next; //或者 more = head;
}
head = head->next;
}
//关键边界值
//分成两个短链表之后
// 将大数的表头拼接在小数的后面
less->next = b.next;
//将表尾置NULL
more->next=NULL;
return a.next; //返回表头指针
}
};
int main()
{
ListNode a(8);
ListNode b(9);
ListNode c(1);
ListNode d(2);
ListNode e(3);
ListNode f(2);
a.next = &b;
b.next = &c;
c.next = &d;
d.next = &e;
e.next = &f;
f.next = NULL;
std::cout<<"the List has been generated!"<<std::endl;
Solution solution;
ListNode* result =solution.partitionList(&a,3);
while(result){
std::cout<<"result: "<<result->val<<std::endl;
result = result->next;
}
return 0;
}