问题描述 以给定值x为基准将链表分割成两部分. 所有小于x的结点排在大于或等于x的结点之前.解决思路 创建两个链表, 将比 x 小的结点放在一个链表中. 将比 x 大和与 x 相等的结点放在一个链表中. 最终合并两个链表.源代码 bs, be 分别是比 x 小的结点所在链表的头结点和尾结点. as, ae分别是大于等于 x 结点所在链表的投机诶按和尾结点. public Node<E> partition(MyLinkedList<E> head, E x) { Node<E> cur = this.head; Node<E> bs = null; Node<E> be = null; Node<E> as = null; Node<E> ae = null; while (cur != null) { if (cur.data.toString().compareTo(x.toString()) < 0) { if (bs == null) { bs = cur; be = cur; } else { be.next = cur; be = be.next; } } else { if (as == null) { as = cur; ae = cur; } else { ae.next = cur; ae = ae.next; } } cur = cur.next; } if (ae != null) { ae.next = null; } if (be != null) { be.next = as; } else { bs = as; } this.head = bs; return this.head; }