public Node partition(int x){
//bs、be分别为小于x节点左侧的首和尾、
//as、ae分别为大于x节点右侧的首和尾
Node bs = null;
Node be = null;
Node as = null;
Node ae = null;
Node cur = this.head;
while (cur != null){
if (cur.data < x){
//第一次插入直接将cur赋值给bs,be等于bs
//第二次以上插入,让be.next为cur,be=be.next往后挪一位
if (bs == null){
bs = cur;
be = bs;
}else {
be.next = cur;
be = be.next;
}
}
if (cur.data > x){
if (as == null){
as = cur;
ae = as;
}else {
ae.next = cur;
ae = ae.next;
}
}
cur = cur.next;
}
//如果小于x的没有 则直接返回as即大于x的右侧节点
if (bs == null){
return as;
}
//如果小于x左侧结点有则拼接be和as,再将ae的next置为null,最后返回bs
be.next = as;
if (as != null){
ae.next = null;
}
return bs;
}