/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func partition(head *ListNode, x int) *ListNode { // 遍历链表将所有小于x的节点摘下, 连接成为一个新的链表 // 再将两个链表连接起来 var preHead = new(ListNode) preHead.Next = head var List = new(ListNode) pre := preHead p := preHead.Next cur := List for p != nil { if p.Val < x { node := p p = p.Next pre.Next = p node.Next = cur.Next cur.Next = node cur = cur.Next } else { pre = pre.Next p = p.Next } } cur.Next = preHead.Next return List.Next}