目录
- 1.解题思路
- 2.代码实现
1.解题思路
此题目思路相对简单,利用双指针,一个指针指向小于val的,一个指针指向大于等于val的,但实现起来,如果仅仅使用单链表,那么还需特别判断第一个指针是否为空从而特意做出特别处理,但如果使用头结点,这样的情况就能被避免,因此使用头结点要相对简单,循环后再将第一个链表与第二个链表相连接就能得到想要的链表
2.代码实现
class Partition {
public:ListNode* partition(ListNode* pHead, int x){ListNode* p1=( ListNode*)malloc(sizeof(ListNode));ListNode* p2=( ListNode*)malloc(sizeof(ListNode));ListNode*p1Head=p1;ListNode*p2Head=p2;ListNode* cur=pHead;while(cur){if(cur->val<x){p1->next=cur;p1=p1->next;cur=cur->next;}else {p2->next=cur;p2=p2->next;cur=cur->next; }}p2->next=NULL;p1->next=p2Head->next;return p1Head->next;}};
结尾:今天的分享到此结束,喜欢的朋友如果感觉有帮助可以点赞三连支持,咱们共同进步!