实现代码
public Node partition(Node pHead, int x){
//以给定值x为基准将链表分割成两部分,
// 所有小于x的结点排在大于或等于x的结点之前 。
Node current=pHead;
Node firstHead=null;
Node firstTail=null;
Node secondHead=null;
Node secondTail=null;
while(current!=null){
if(current.value<=x){
if(firstHead==null){
firstHead=current;
firstTail=current;
}else{
firstTail.next=current;
firstTail=firstTail.next;
}
}
else{
if(secondHead==null){
secondHead=current;
secondTail=current;
}else{
secondTail.next=current;
secondTail=secondTail.next;
}
}
current=current.next;
}
if(firstHead==null){
//小于k结点的链表为空
secondTail.next=null;
return secondHead;
} else if(secondHead==null){
//大于k结点的链表为空
firstTail.next=null;
return firstHead;
}else {
firstTail.next=secondHead;
secondTail.next=null;
return firstHead;
}
}