您的位置:首页 > 编程语言 > C语言/C++

(c++)将单向链表按某值划分成左边小、中间相等、右边大的形式

2019-03-02 15:21 211 查看

ListNode* listPartition1(ListNode* head, int num){
if(head=nullptr)
return nullptr;
if(head->next=nullptr)
return head;
ListNode *sh=NULL;//小于区域的head
ListNode *st=NULL;//小于区域的end
ListNode *eh=NULL;
ListNode *et=NULL;
ListNode *bh=NULL;
ListNode *bt=NULL;
ListNode *next;
while(head!=nullptr){
next=head->next;
head->next=nullptr;
if(head->val<num){
if(sh=nullptr)
{
sh=head;
st=head;
}
else
{st->next=head;
st=head;}}
if(head->val>num){
if(bh=nullptr)
{bh=head;
bt=head;
}
else{
bt->next=head;
bt=head;}}
else
{if(eh==nullptr)
{eh=head;
et=head;
}
else{
et->next=head;
et=head;}}
head=next;}

if(sh!=nullptr){
st->next=eh;
et=et==nullptr?st:et;}
if(eh!=nullptr){
et->next=bh;
}
return sh!=nullptr?sh:eh!==nullptr?eh:bh;}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐