#include <iostream>
using namespace std;
struct node
{
int data;
node *next;
};
class linked_list
{
private:
node *head,*tail;
public:
linked_list()
{
head = NULL;
tail = NULL;
}
void add_node(int n)
{
node *tmp = new node;
tmp->data = n;
tmp->next = NULL;
if(head == NULL)
{
head = tmp;
tail = tmp;
}
else
{
tail->next = tmp;
tail = tail->next;
}
}
node* getHead()
{
return head;
}
};
int main()
{
linked_list a;
a.add_node(1);
a.add_node(2);
a.add_node(3);
a.add_node(4);
a.add_node(5);
bool leave= false;
int direction = 1;
node* considered_node = new node(*(a.getHead()));
while(true)
{
if (considered_node->next == NULL)
{
break;
}
if (direction*considered_node->next->data < direction*considered_node->data)
{
int tmp = considered_node->next->data;
considered_node->next->data = considered_node->data;
considered_node->data = tmp;
}
considered_node = considered_node->next;
direction = -1*direction;
}
considered_node = considered_node->next;
delete considered_node;
node* cur = a.getHead();
while(cur != NULL) {
cout << cur->data << " ";
cur = cur->next;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBub2RlCnsKICAgIGludCBkYXRhOwogICAgbm9kZSAqbmV4dDsKfTsKCmNsYXNzIGxpbmtlZF9saXN0CnsKcHJpdmF0ZToKICAgIG5vZGUgKmhlYWQsKnRhaWw7CnB1YmxpYzoKICAgIGxpbmtlZF9saXN0KCkKICAgIHsKICAgICAgICBoZWFkID0gTlVMTDsKICAgICAgICB0YWlsID0gTlVMTDsKICAgIH0KCiAgICB2b2lkIGFkZF9ub2RlKGludCBuKQogICAgewogICAgICAgIG5vZGUgKnRtcCA9IG5ldyBub2RlOwogICAgICAgIHRtcC0+ZGF0YSA9IG47CiAgICAgICAgdG1wLT5uZXh0ID0gTlVMTDsKCiAgICAgICAgaWYoaGVhZCA9PSBOVUxMKQogICAgICAgIHsKICAgICAgICAgICAgaGVhZCA9IHRtcDsKICAgICAgICAgICAgdGFpbCA9IHRtcDsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgdGFpbC0+bmV4dCA9IHRtcDsKICAgICAgICAgICAgdGFpbCA9IHRhaWwtPm5leHQ7CiAgICAgICAgfQogICAgfQoKICAgIG5vZGUqIGdldEhlYWQoKQogICAgewogICAgICAgIHJldHVybiBoZWFkOwogICAgfQp9OwoKaW50IG1haW4oKQp7CiAgICBsaW5rZWRfbGlzdCBhOwogICAgYS5hZGRfbm9kZSgxKTsKICAgIGEuYWRkX25vZGUoMik7CiAgICBhLmFkZF9ub2RlKDMpOwogICAgYS5hZGRfbm9kZSg0KTsKICAgIGEuYWRkX25vZGUoNSk7CiAgICBib29sIGxlYXZlPSBmYWxzZTsKICAgIGludCBkaXJlY3Rpb24gPSAxOwogICAgbm9kZSogY29uc2lkZXJlZF9ub2RlID0gbmV3IG5vZGUoKihhLmdldEhlYWQoKSkpOwogICAgd2hpbGUodHJ1ZSkKICAgIHsKICAgICAgICBpZiAoY29uc2lkZXJlZF9ub2RlLT5uZXh0ID09IE5VTEwpCiAgICAgICAgewogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKGRpcmVjdGlvbipjb25zaWRlcmVkX25vZGUtPm5leHQtPmRhdGEgPCBkaXJlY3Rpb24qY29uc2lkZXJlZF9ub2RlLT5kYXRhKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHRtcCA9IGNvbnNpZGVyZWRfbm9kZS0+bmV4dC0+ZGF0YTsKICAgICAgICAgICAgY29uc2lkZXJlZF9ub2RlLT5uZXh0LT5kYXRhID0gY29uc2lkZXJlZF9ub2RlLT5kYXRhOwogICAgICAgICAgICBjb25zaWRlcmVkX25vZGUtPmRhdGEgPSB0bXA7CiAgICAgICAgfQogICAgICAgIGNvbnNpZGVyZWRfbm9kZSA9IGNvbnNpZGVyZWRfbm9kZS0+bmV4dDsKICAgICAgICBkaXJlY3Rpb24gPSAtMSpkaXJlY3Rpb247CiAgICB9CiAgICAKICAgIGNvbnNpZGVyZWRfbm9kZSA9IGNvbnNpZGVyZWRfbm9kZS0+bmV4dDsKICAgIGRlbGV0ZSBjb25zaWRlcmVkX25vZGU7CiAgICAKICAgIG5vZGUqIGN1ciA9IGEuZ2V0SGVhZCgpOwogICAgd2hpbGUoY3VyICE9IE5VTEwpIHsKICAgICAgICBjb3V0IDw8IGN1ci0+ZGF0YSA8PCAiICI7CiAgICAgICAgY3VyID0gY3VyLT5uZXh0OwogICAgfQogICAgCiAgICByZXR1cm4gMDsKfQ==