func PartitionLinkedList(l *linkedlist.LinkedList, x int) { var ltroot, lessthan, gtroot, greaterthan *linkedlist.Node current := l.Root for current != nil { if current.Value < x { if ltroot == nil || lessthan == nil { ltroot = current lessthan = current } else { lessthan.Next = current lessthan = lessthan.Next } } else { if gtroot == nil || greaterthan == nil { gtroot = current greaterthan = current } else { greaterthan.Next = current greaterthan = greaterthan.Next } } current = current.Next } if l.Root != nil { if ltroot != nil && gtroot != nil { l.Root = ltroot l.Head = greaterthan lessthan.Next = gtroot greaterthan.Next = nil } } }