#include <iostream>
using namespace std;
struct node{
int data;
struct node* next;
node(int x)
{
data=x;
next=NULL;
}
};
struct node* sortBLL(struct node* head)
{
struct node* temp=head;
struct node* head1=NULL;struct node* tail1=NULL;
struct node* head2=NULL;struct node* tail2=NULL;
if(head==NULL && head->next==NULL)
return head;
while(temp)
{
if(temp->data==0)
{
if(head1==NULL)
head1=tail1=temp;
else
{
tail1->next=temp;
tail1=tail1->next;
}
}
else
{
if(head2==NULL)
head2=tail2=temp;
else
{
tail2->next=temp;
tail2=tail2->next;
}
}
temp=temp->next;
}
if(tail2)
tail2->next=NULL;
if(tail1)
{
tail1->next=head2;
return head1;
}
else
return head2;
}
void printlinked(struct node* head)
{
while(head)
{
cout<<head->data<<" ";
head=head->next;
}
}
int main() {
struct node* head=new node(1);
head->next=new node(0);
head->next->next=new node(1);
head->next->next->next=new node(0);
head->next->next->next->next=new node(0);
head->next->next->next->next->next=new node(0);
struct node* res=sortBLL(head);
printlinked(res);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJ1Y3Qgbm9kZXsKCSAgICBpbnQgZGF0YTsKCSAgICBzdHJ1Y3Qgbm9kZSogbmV4dDsKCSAgICBub2RlKGludCB4KQoJICAgIHsKCSAgICAJZGF0YT14OwoJICAgIAluZXh0PU5VTEw7CgkgICAgfQp9OwpzdHJ1Y3Qgbm9kZSogc29ydEJMTChzdHJ1Y3Qgbm9kZSogaGVhZCkKewoJc3RydWN0IG5vZGUqIHRlbXA9aGVhZDsKCXN0cnVjdCBub2RlKiBoZWFkMT1OVUxMO3N0cnVjdCBub2RlKiB0YWlsMT1OVUxMOwoJc3RydWN0IG5vZGUqIGhlYWQyPU5VTEw7c3RydWN0IG5vZGUqIHRhaWwyPU5VTEw7CglpZihoZWFkPT1OVUxMICYmIGhlYWQtPm5leHQ9PU5VTEwpCglyZXR1cm4gaGVhZDsKCXdoaWxlKHRlbXApCgl7CglpZih0ZW1wLT5kYXRhPT0wKQoJewoJCSAgIGlmKGhlYWQxPT1OVUxMKQoJCSAgIGhlYWQxPXRhaWwxPXRlbXA7CiAgICAgICAgICAgZWxzZQoJCSAgewoJCQl0YWlsMS0+bmV4dD10ZW1wOwoJCQl0YWlsMT10YWlsMS0+bmV4dDsKCQkgIH0KCX0KCWVsc2UKCXsKCQkgICBpZihoZWFkMj09TlVMTCkKCQkgICBoZWFkMj10YWlsMj10ZW1wOwoJCSAgIGVsc2UKCQkgICB7CgkJICAgCXRhaWwyLT5uZXh0PXRlbXA7CgkJICAgCXRhaWwyPXRhaWwyLT5uZXh0OwoJCSAgIH0KCX0KCXRlbXA9dGVtcC0+bmV4dDsKfQppZih0YWlsMikKdGFpbDItPm5leHQ9TlVMTDsKaWYodGFpbDEpCnsKdGFpbDEtPm5leHQ9aGVhZDI7CnJldHVybiBoZWFkMTsKfQplbHNlCnJldHVybiBoZWFkMjsKCn0Kdm9pZCBwcmludGxpbmtlZChzdHJ1Y3Qgbm9kZSogaGVhZCkKewoJd2hpbGUoaGVhZCkKCXsKCQljb3V0PDxoZWFkLT5kYXRhPDwiICI7CgkJaGVhZD1oZWFkLT5uZXh0OwoJfQp9CmludCBtYWluKCkgewoJc3RydWN0IG5vZGUqIGhlYWQ9bmV3IG5vZGUoMSk7CgloZWFkLT5uZXh0PW5ldyBub2RlKDApOwogICAgaGVhZC0+bmV4dC0+bmV4dD1uZXcgbm9kZSgxKTsKCWhlYWQtPm5leHQtPm5leHQtPm5leHQ9bmV3IG5vZGUoMCk7CgloZWFkLT5uZXh0LT5uZXh0LT5uZXh0LT5uZXh0PW5ldyBub2RlKDApOwoJaGVhZC0+bmV4dC0+bmV4dC0+bmV4dC0+bmV4dC0+bmV4dD1uZXcgbm9kZSgwKTsKCXN0cnVjdCBub2RlKiByZXM9c29ydEJMTChoZWFkKTsKCXByaW50bGlua2VkKHJlcyk7CglyZXR1cm4gMDsKfQ==