#include <iostream>
using namespace std;
struct Elem
{
int num;
Elem* next;
};
void printLinkedList(Elem* list) {
while (list) {
cout << list->num << ' ';
list = list->next;
}
cout << endl;
}
bool deleteFromLinkedList(Elem* &list) {
if (!list)
return false;
Elem *curr = list, *next = list->next, *prev = NULL;
bool anyRemoved = false;
while (next)
{
if (curr->num < next->num) {
if (prev)
prev->next = next;
else
list = next;
delete curr;
anyRemoved = true;
}
else {
prev = curr;
}
curr = next;
next = curr->next;
}
return anyRemoved;
}
int main()
{
Elem* first = NULL, *last = NULL, *p;
int i;
//cout << "Enter any number or 0 to finish: ";
cin >> i;
while (i != 0)
{
p = new Elem;
p->num = i;
p->next = NULL;
if (first == NULL)
{
first = last = p;
}
else
{
last->next = p;
last = last->next;
}
//cout << "Enter any number or 0 to finish: ";
cin >> i;
}
printLinkedList(first);
while (deleteFromLinkedList(first));
printLinkedList(first);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IEVsZW0KewogICAgaW50IG51bTsKICAgIEVsZW0qIG5leHQ7Cn07Cgp2b2lkIHByaW50TGlua2VkTGlzdChFbGVtKiBsaXN0KSB7Cgl3aGlsZSAobGlzdCkgewoJCWNvdXQgPDwgbGlzdC0+bnVtIDw8ICcgJzsKCQlsaXN0ID0gbGlzdC0+bmV4dDsKCX0KCWNvdXQgPDwgZW5kbDsKfQoKYm9vbCBkZWxldGVGcm9tTGlua2VkTGlzdChFbGVtKiAmbGlzdCkgewoKICAgIGlmICghbGlzdCkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgRWxlbSAqY3VyciA9IGxpc3QsICpuZXh0ID0gbGlzdC0+bmV4dCwgKnByZXYgPSBOVUxMOwoJYm9vbCBhbnlSZW1vdmVkID0gZmFsc2U7CgogICAgd2hpbGUgKG5leHQpCiAgICB7CiAgICAgICAgaWYgKGN1cnItPm51bSA8IG5leHQtPm51bSkgewogICAgICAgICAgICBpZiAocHJldikKICAgICAgICAgICAgICAgIHByZXYtPm5leHQgPSBuZXh0OwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBsaXN0ID0gbmV4dDsKICAgICAgICAgICAgZGVsZXRlIGN1cnI7CiAgICAgICAgICAgIGFueVJlbW92ZWQgPSB0cnVlOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcHJldiA9IGN1cnI7CiAgICAgICAgfQogICAgICAgIGN1cnIgPSBuZXh0OwogICAgICAgIG5leHQgPSBjdXJyLT5uZXh0OwogICAgfQoKCXJldHVybiBhbnlSZW1vdmVkOwp9CgppbnQgbWFpbigpCnsKICAgIEVsZW0qIGZpcnN0ID0gTlVMTCwgKmxhc3QgPSBOVUxMLCAqcDsKICAgIGludCBpOwoKICAgIC8vY291dCA8PCAiRW50ZXIgYW55IG51bWJlciBvciAwIHRvIGZpbmlzaDogIjsKICAgIGNpbiA+PiBpOwogICAKICAgIHdoaWxlIChpICE9IDApCiAgICB7CiAgICAgICAgcCA9IG5ldyBFbGVtOwogICAgICAgIHAtPm51bSA9IGk7CiAgICAgICAgcC0+bmV4dCA9IE5VTEw7CiAgICAgICAgaWYgKGZpcnN0ID09IE5VTEwpCiAgICAgICAgewogICAgICAgICAgICBmaXJzdCA9IGxhc3QgPSBwOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBsYXN0LT5uZXh0ID0gcDsKICAgICAgICAgICAgbGFzdCA9IGxhc3QtPm5leHQ7CiAgICAgICAgfQogICAgICAgIC8vY291dCA8PCAiRW50ZXIgYW55IG51bWJlciBvciAwIHRvIGZpbmlzaDogIjsKICAgICAgICBjaW4gPj4gaTsKICAgIH0KCiAgICBwcmludExpbmtlZExpc3QoZmlyc3QpOwoJd2hpbGUgKGRlbGV0ZUZyb21MaW5rZWRMaXN0KGZpcnN0KSk7CiAgICBwcmludExpbmtlZExpc3QoZmlyc3QpOwp9