给出一个链表和一个值x ,以x为参照将链表划分成两部分,使所有小于x的节点都位于大于或等于x的节点之前。
两个部分之内的节点之间要保持的原始相对顺序。
例如:
给出1→4→3→2→5→2 和 x=3,
返回1→2→2→4→3→5.

/*
 * function ListNode(x){
 *   this.val = x;
 *   this.next = null;
 * }
 */

/**
  * 
  * @param head ListNode类 
  * @param x int整型 
  * @return ListNode类
  */
function partition( head ,  x ) {
    // write code here
    if(head==null || head.next==null || x==0){return head}
    var current = head
    var lowList = {}
    var lowCur = lowList
    var highList = {}
    var highCur = highList
    while(current){
        if(current.val < x){
            lowCur.next = current
            lowCur = lowCur.next
        }else{
            highCur.next = current
            highCur = highCur.next
        }
        current = current.next
    }
    highCur.next = null
    lowCur.next = highList.next
    return lowList.next
}
module.exports = {
    partition : partition
};