LeetCode 86. 分隔链表

题目链接:https://leetcode-cn.com/problems/partition-list/

给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。

你应当保留两个分区中每个节点的初始相对位置。

示例:

输入: head = 1->4->3->2->5->2, x = 3
输出: 1->2->2->4->3->5

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     struct ListNode *next;
 6  * };
 7  */
 8 
 9 struct ListNode* partition(struct ListNode* head, int x){
10     if(head==NULL||head->next==NULL) return head;
11     struct ListNode *front=(struct ListNode*)malloc(sizeof(struct ListNode));
12     struct ListNode *rear=(struct ListNode*)malloc(sizeof(struct ListNode));
13     struct ListNode *q=head,*f=front,*r=rear;
14     while(q){
15         if(q->val<x){
16             f->next=q;
17             f=q;
18         }else{
19             r->next=q;
20             r=q;
21         }
22         q=q->next;
23     }
24     r->next=NULL;
25     f->next=rear->next;
26     return front->next;
27 }

 

posted @ 2020-03-04 10:00  wydxry  阅读(158)  评论(0编辑  收藏  举报
Live2D