给出一个链表和一个数X,要求将链表中所有小于X的值放到左边,等于或者大于X的值放到右边,并且原链表的节点顺序不变。
示例:
假设: 1->7->3->5->2->8->4,给定x=4
那么变换后的节点为: 1->3->2->7->5->8->4
思路:
我们先把题目简单化,我们可以先找出链表中小于X的节点放到一个新的链表里面
然后再找出等于或者大于X的节点放到另外一个条链表
最后将第一条链表的next指向第二条链表的头结点,这样就完成了题目的要求。
代码如下:
1 | class ListNode { |
注意:tail.next = nil 是为了防止形成环,因为tail.next = node ! ,tail = node
这一句实际上是形成了环,所以需要将tail.next置空来打破环