这种链表的题起始最简单,业务逻辑就很简单,只是说让你处理一下指针。设计为难题有点不应该啊。
/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param head ListNode类 
     * @param x int整型 
     * @return ListNode类
     */
    ListNode* partition(ListNode* head, int x) {
        // write code here
        ListNode *left = new ListNode(0);
        ListNode *right = new ListNode(0);
        ListNode *leftCur = left;
        ListNode *rightCur = right;
        
        ListNode *p = head;
        ListNode *pri = head;
        
        while(p != NULL){
            if(p->val < x){
                leftCur->next = p;
                leftCur = p;
            }else{
                rightCur->next = p;
                rightCur = p;
            }
            
            pri = p;
            p = p->next;
            pri->next = NULL;
        }
        
        if(left->next != NULL){
            leftCur->next = right->next;
            return left->next;
        }else{
            return right->next;
        }
    }
};