题目:链表分割
题目描述:
现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。
代码:
public class Partition {
public ListNode partition(ListNode pHead, int x) {
// write code here
ListNode smallNode = new ListNode(0);
ListNode smallTemp = smallNode;
ListNode bigNode = new ListNode(0);
ListNode bigTemp = bigNode;
ListNode cur = pHead;
while(cur != null) {
if(cur.val < x) {
smallTemp.next = new ListNode(cur.val);
smallTemp = smallTemp.next;
}else {
bigTemp.next = new ListNode(cur.val);
bigTemp = bigTemp.next;
}
cur = cur.next;
}
smallTemp.next = bigNode.next;
return smallNode.next;
}
}