/*
* 直接创建两个链表:一个链表存放小于x的元素,另一个存放大于或等于x的元素。
* 然后迭代访问整个链表,将元素插入before或者after链表前端!!!一旦抵达链表末端,则表明拆分完毕,最后合并两个链表。
*/
public static LinkedListNode partition2(LinkedListNode node, int x){
if( node== null)
return null;
LinkedListNode beforeStart= null;
LinkedListNode afterStart= null;
while( node!= null){
LinkedListNode next= node. next;
node. next= null;
if( node. data< x){
node. next= beforeStart;
beforeStart= node;
} else{
node. next= afterStart. next;
afterStart= node;
}
}
if( beforeStart== null)
return afterStart;
LinkedListNode head= beforeStart;
while( beforeStart. next!= null){
beforeStart= beforeStart. next;
}
beforeStart. next= afterStart;
return head;
}
【算法】以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的节点之前
最新推荐文章于 2022-11-26 20:24:46 发布