这种链表的题起始最简单,业务逻辑就很简单,只是说让你处理一下指针。设计为难题有点不应该啊。
/** * 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; } } };