LeetCode 86 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 shoshould preserve the original relative order of the nodes in each of the two partitions.
For example,
Given1->4->3->2->5->2And x = 3,
Return1->2->2->4->3->5.
The question requires segmentation of the linked list. All elements smaller than X are placed before the elements greater than or equal to X.
The Code is as follows:
class Solution {public: ListNode* partition(ListNode* head, int x) { if (head == NULL)return head;ListNode tmpHead(0);tmpHead.next = head;ListNode *p = &tmpHead;ListNode *q = p->next;while(q && q->val
next;q = p->next;}while (q != NULL){ListNode * tmpNode = q->next;if(tmpNode == NULL) break;if (tmpNode->val < x){q->next = tmpNode->next;tmpNode->next = p->next;p->next = tmpNode;p = p->next;}else{ q = q->next;}}return tmpHead.next; }};