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 static void solution_2_2_3(Node head,int x){
Node h1=null,h2=null,temp=head,p1=null,p2=null;
while(temp!=null){
if(temp.data<x){
if(h1==null){
h1=temp;
p1=temp;
}
else{
p1.next=temp;
p1=temp;
}
}
else{
if(h2==null){
h2=temp;
p2=temp;
}
else{
p2.next=temp;
p2=temp;
}
}
temp=temp.next;
}
p1.next=h2;
p2.next=null;
for(Node r=h1;r!=null;r=r.next){
System.out.print(r.data+" ");
}
}