题目
86. 分隔链表 - 力扣(LeetCode)
Python
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def partition(self, head: Optional[ListNode], x: int) -> Optional[ListNode]:
small=ListNode()
big=ListNode()
p_s=small
p_b=big
while head:
if head.val<x:
p_s.next=head
p_s=p_s.next
else:
p_b.next=head
p_b=p_b.next
head=head.next
p_b.next=None
p_s.next=big.next
return small.next
C++
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* partition(ListNode* head, int x)
{
ListNode* small=new ListNode(0);
ListNode* big=new ListNode(0);
ListNode* p_s=small;
ListNode* p_b=big;
while(head!=nullptr)
{
if(head->val<x)
{
p_s->next=head;
p_s=p_s->next;
}
else
{
p_b->next=head;
p_b=p_b->next;
}
head=head->next;
}
p_b->next=nullptr;
p_s->next=big->next;
return small->next;
}
};
C语言
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* partition(struct ListNode* head, int x)
{
if(head==NULL) return head;
struct ListNode *small=(struct ListNode*)malloc(sizeof(struct ListNode));
struct ListNode *big=(struct ListNode*)malloc(sizeof(struct ListNode));
struct ListNode* p_s=small;
struct ListNode* p_b=big;
while(head!=NULL)
{
if(head->val<x)
{
p_s->next=head;
p_s=p_s->next;
}
else
{
p_b->next=head;
p_b=p_b->next;
}
head=head->next;
}
p_b->next=NULL;
p_s->next=big->next;
return small->next;
}