拆分链表 java_Java拆分整数链表

我需要编写一个方法,该方法以单个链接的整数列表和一个称为拆分值的特殊值开头 . 列表的元素没有特定的顺序 . 该方法将节点划分为两个链接列表:一个包含所有包含小于拆分值的元素的节点,另一个包含所有其他节点 . 如果原始链表具有任何重复的整数(即,其中具有相同元素的任何两个或更多个节点),则具有该元素的新链表应具有重复该元素的相同数量的节点 . 该方法返回两个头引用 - 每个引用创建一个链接列表 .

我花了无数个小时试图做到这一点,并认为这是最接近但我编译时我的copyTail * IntNodes可能没有初始化 . 我的代码也可能完全错误....任何帮助指向我正确的方向?

public static IntNode[ ] listSplitLessGreater(IntNode source, int splitter)

{

IntNode copyHeadLess;

IntNode copyTailLess;

IntNode copyHeadGreater;

IntNode copyTailGreater;

IntNode[ ] answer = new IntNode[2];

boolean less = true;

boolean greater = true;

// Handle the special case of the empty list.

if (source == null)

return answer; // The answer has two null references .

//Split list into two lists less and greater/equal than splitter.

while (source.link != null)

{

if (splitter < source.data)

{

if (less)

{

copyHeadLess = new IntNode(source.data, null);

copyTailLess = copyHeadLess;

less=false;

}

else

{

source = source.link;

copyTailLess.addNodeAfter(source.data);

copyTailLess = copyTailLess.link;

}

}

else

{

if (greater)

{

copyHeadGreater = new IntNode(source.data, null);

copyTailGreater = copyHeadGreater;

greater=false;

}

else

{

source = source.link;

copyTailGreater.addNodeAfter(source.data);

copyTailGreater = copyTailGreater.link;

}

}

}

//Return Head References

answer[0] = copyHeadLess;

answer[1] = copyHeadGreater;

return answer;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值