您的位置:首页 > 编程语言 > Java开发

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

2017-11-28 16:56 323 查看
【题目】

  与上一篇博客相似,唯一的不同就是在原问题的要求智商再增加如下两个要求。

  在左、中、右三个部分的内部也做顺序要求,要求每部分里的节点从左到右的顺序与原链表中节点的先后次序一致

【代码】

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 链表
相关文章推荐