思路:定义两个新链表,一个放小于基准的部分,一个放小于基准的部分,然后定义一个cur遍历整个链表,判断节点大小将节点插入相应的链表
public ListNode partition(int x){
if(head==null||head.next==null){
return head;
}
ListNode cur=this.head;
ListNode beforeStart=null;
ListNode beforeEnd=null;
ListNode afterStart=null;
ListNode afterEnd=null;
while(cur!=null){
if(cur.data<x){
if(beforeStart==null){
beforeStart=cur;
beforeEnd=cur;
}else{
beforeEnd.next=cur;
beforeEnd=cur;
}
}else{
if(afterStart==null){
afterStart=cur;
afterEnd=cur;
}else{
afterEnd.next=cur;
afterEnd=cur;
}
}
cur=cur.next;
}
if(beforeStart==null){
return afterStart;
}
beforeEnd.next=afterStart;
if(afterEnd!=null){
afterEnd.next=null;
}
return beforeStart;
}