要求:以给定值x为基准将链表分割为两部分,所有小于x的结点排在大于或等于x的结点之前,注意分割之后保持原来的数据顺序不变。
思路:
1 创建两个链表 smallNumberList 和 bigNumberList 分别来存储值小于x的结点和值大于等于x的结点。
2 遍历整个链表,根据结点的值和x的关系,分别尾插到对应链表上;在这个过程中要注意如果被插入的链表不为空则要把结点查到这个链表最后一个结点的后面。
3 直接把 小于 和 大于等于的链表接起来。
特殊性:
1.链表为空链表时,直接返回 null。
2.链表没有小于x的结点时,直接返回 bigNumberList。
3.链表有小于x的结点时,让 smallNumberList 的最后一个结点指向 bigNumberList,如果 bigNumberList 不为空,让 bigNumberList 的最后一个结点指向空,返回 smallNumberList。
完整调试程序:
时间复杂度:O(n)
Java以给定值x为基准将链表分割为两部分,所有小于x的结点排在大于或等于x的结点之前
最新推荐文章于 2022-12-29 11:23:21 发布