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; } }