标签:partition list 链表
Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.
You should preserve the original relative order of the nodes in each of the two partitions.
For example,
Given 1->4->3->2->5->2 and x = 3,
return 1->2->2->4->3->5.
public ListNode partition(ListNode head, int x) {
if(head==null||head.next==null)
return head;
ListNode little_start=new ListNode(0),little_end=little_start;
ListNode big_start=new ListNode(0),big_end=big_start;
ListNode pListNode=head;
while(pListNode!=null)
{
if(pListNode.val<x)
{
little_end.next=pListNode;
little_end=pListNode;
}else
{
big_end.next=pListNode;
big_end=pListNode;
}
pListNode=pListNode.next;
}
little_start=little_start.next;
big_start=big_start.next;
if(little_start!=null)
{
big_end.next=null;
little_end.next=big_start;
return little_start;
}
else
return big_start;
}标签:partition list 链表
原文地址:http://blog.csdn.net/mnmlist/article/details/43535377