以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前,返回重新排列后的链表的头指针。
注意:分割以后保持原来的数据顺序不变。
思想:将链表分为两部分,一部分存比 x 小的值,一部分存大的值,最后将两个链表连接起来
1.设置两个新链表,small,big为null,设置两个结点smalLast,bigList为空,(使这两个结点一直为最后一个结点)
2.设cur=head,当它不为空,进行循环
- 1)将cur.value的值与x的结点进行比较,如果cur.value<x,让它插入到small中,small为空,就相当头插,否则就为尾插,smalLast记录最后一个结点
- 2)否则的话,让它插入到big中,big为空,就相当头插,否则就为尾插,bigList记录最后一个结点
3.当small为空时,直接返回big
4.否则的话,让smallLast.next=big,再判断bigLast是否为空
5.返回small
public static Node partition(Node head, int x){
if(head==null){
return