Java——将单向链表按某值划分成左边小、中间相等、右边大的形式(进阶问题)

来源:互联网 发布:微信软文软件 编辑:程序博客网 时间:2024/04/29 06:22

【题目】
  与上一篇博客相似,唯一的不同就是在原问题的要求智商再增加如下两个要求。
  在左、中、右三个部分的内部也做顺序要求,要求每部分里的节点从左到右的顺序与原链表中节点的先后次序一致

【代码】

public static Node listPartition2(Node head,int pivot) {    Node sH = null;    Node sT = null;    Node eH = null;    Node eT = null;    Node bH = null;    Node bT = null;    Node next =null;    while(head!=null) {        next = head.next;        head.next = null;        if(head.value < pivot) {            if(sH==null) {                sH = head;                sT = head;            }else {                sT.next = head;                sT = head;            }        }else if(head.value == pivot) {            if(eH==null) {                eH = head;                eT = head;            }else {                eT.next = head;                eT = head;            }        }else {            if(bH==null) {                bH = head;                bT = head;            }else {                bT.next = head;                bT = head;            }        }        head = next;    }    if(sT != null) {        sT.next = eH;        eT = eT == null ? sT : eT;    }    if(eT!=null) {        eT.next = bH;    }    return sH != null ? sH : eH !=null ? eH : bH;}
阅读全文
1 0
原创粉丝点击