编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前
给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};*/
class Partition {
public:
ListNode* partition(ListNode* pHead, int x) {
// write code here
ListNode* k = new ListNode(0);
ListNode* pc= k;
ListNode* p= pHead;
while(p)
{
if(p->val < x)
{
ListNode* pm = new ListNode(0);
pm->val = p->val;
pm->next = NULL;
pc->next = pm;
pc = pm;
}
p = p->next;
}
ListNode* p2= pHead;
while(p2)
{
if(p2->val >= x)
{
ListNode* pm = new ListNode(0);
pm->val = p2->val;
pm->next = NULL;
pc->next = pm;
pc = pm;
}
p2 = p2->next;
}
return k->next;
}
};
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};*/
class Partition {
public:
ListNode* partition(ListNode* pHead, int x) {
// write code here
ListNode* k = new ListNode(0);
ListNode* pc= k;
ListNode* k2 = new ListNode(0);
ListNode* pc2= k2;
ListNode* p= pHead;
while(p)
{
if(p->val < x)
{
ListNode* pm = new ListNode(p->val);
pc->next = pm;
pc = pm;
}
else
{
ListNode* pm2 = new ListNode(p->val);
pc2->next = pm2;
pc2 = pm2;
}
p = p->next;
}
pc->next = k2->next;
return k->next;
}
};
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};*/
class Partition {
public:
ListNode* partition(ListNode* pHead, int x) {
// write code here
ListNode* k = new ListNode(0);
ListNode* pc= k;
ListNode* p= pHead;
while(p)
{
if(p->val < x)
{
ListNode* pm = new ListNode(p->val);
pc->next = pm;
pc = pm;
}
p = p->next;
}
ListNode* p2= pHead;
while(p2)
{
if(p2->val >= x)
{
ListNode* pm = new ListNode(p2->val);
pc->next = pm;
pc = pm;
}
p2 = p2->next;
}
return k->next;
}
};
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};*/
class Partition {
public:
ListNode* partition(ListNode* pHead, int x) {
// write code here
ListNode* k = new ListNode(0);
ListNode* start1= k;
ListNode* k2 = new ListNode(0);
ListNode* start2= k2;
ListNode* p= pHead;
while(p)
{
if(p->val < x)
{
k->next = new ListNode(p->val);
k = k->next;
}
else
{
k2->next = new ListNode(p->val);
k2 = k2->next;
}
p = p->next;
}
k->next = start2->next;
return start1->next;
}
};