题目描述
编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前
给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。
// 分割链表:
public ListNode partition1(ListNode pHead, int x) {
// write code here
if(pHead == null){
return pHead;
}
ListNode list1 = new ListNode(0);
ListNode list2 = new ListNode(0);
ListNode result = list1;
ListNode tmp = list2;
while(pHead != null){
if(pHead.val < x){
list1.next = pHead;
list1 = list1.next;
pHead = pHead.next;
}else{
list2.next =pHead;
list2 = list2.next;
pHead = pHead.next;
}
}
list1.next = tmp.next;
list2.next = null;
return result.next;
}