import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
public class Solution {
/**
*
* @param head ListNode类
* @param x int整型
* @return ListNode类
*/
public ListNode partition (ListNode head, int x) {
ListNode node = new ListNode(-1);
node.next = head;
ListNode res = node;
if(head==null)
return null;
while(node.next!=null&&node.next.val<x){
node = node.next;
}
ListNode temp = node.next;//后半部分节点,node为前半部分最后一个<x的节点
ListNode h2 = node.next;//记录后半部分头节点
ListNode pre = node;//记录前置节点,方便做删除操作
while(temp!=null){
if(temp.val<x){
//链表后半部分删除节点操作
ListNode t = temp.next;
pre.next = temp.next;
//链表的前半部分尾部插入节点操作
node.next = temp;
temp.next = null;
node = node.next;
temp = t;
}
else {
pre = temp;
temp = temp.next;
}
}
node.next = h2;
return res.next;
}
}