方法一: 先将链表都放入到数组中,然后在数组中做分区操作,最后将数组中的每个节点重新串成一个链表
public ListNode partition(ListNode head, int x) {
//边界条件
if(head == null || head.next == null){
return head;
}
//循环链表得到链表中节点的个数
int count = 0;
ListNode cur = head;
while(cur != null){
count++;
cur = cur.next;
}
//指针回到头节点
cur = head;
//创建一个节点数组 将所有节点放入
//数组的长度? 循环链表找到节点的个数
ListNode[] nodes = new ListNode[count];
//循环数组 将节点放入
int i = 0;
for(i = 0;i < nodes.length;i++){
//每次将当前节点放入到数组中
nodes[i] = cur;
cur = cur.next;
}
//对nodes进行partition
arrPartition(nodes,x);
//将数组串成链表
for(i = 1;i < nodes.length;i++){
nodes[i - 1].next =