题目:以给定x为基准将链表分割为两部分,所有小于x的节点排在大于活动等于节点之前(保持原来顺序)
public class solution{
class Node{
int val;
Node next;
Node(int val){
this.val=val;
}
}
public Node partition(Node head,int x){
Node small=null;
Node big=null;
Node samllLast=null;
Node bigLast=null;
for(Node cur=head;cur!=null;cur=cur.next){
if(cur.val<x){
if(small==null){
small=cur;
}
else{
samllLast.next=cur;
}
samllLast=cur;
}
else{
if(big==null){
big=cur;
}
else{
bigLast.next=cur;
}
bigLast=cur;
}
}
if(small==null){
return big;
}
else{
samllLast.next=big;
if(bigLast!=null){
bigLast.next=null;
}
return small;
}
}
}
}