#include <iostream>
using namespace std;
struct elem
{
elem() : next(nullptr) {}
int info;
elem *next;
};
void print(elem *ptr);
void vvod(elem *ptr);
void udalenie(elem *ptr);
void insert_end(elem *ptr, int a);
int main()
{
elem *head = new elem;
vvod(head);
udalenie(head);
cout << "NEW LIST" << endl;
print(head);
}
void vvod(elem *bashka)
{
int massiv[] = { 1,2,2,3,4,5,5,5,6,6,7,8,9 };
bashka->info = massiv[0];
for (int i = 1; i < sizeof(massiv) / sizeof(int); i++)
insert_end(bashka, massiv[i]);
}
void udalenie(elem *spisok)
{
while (spisok->next != nullptr)
{
elem *nextelem = spisok->next;
if (spisok->info == nextelem->info) {
spisok->next = nextelem->next;
delete nextelem;
}
else
spisok = nextelem;
}
}
void insert_end(elem *bashka, int a)
{
elem *lastelem = bashka;
while (lastelem->next != nullptr)
lastelem = lastelem->next;
elem *nextelem = new elem;
nextelem->info = a;
lastelem->next = nextelem;
}
void print(elem *spisok)
{
while (spisok != nullptr)
{
cout << spisok->info << " ";
spisok = spisok->next;
}
cout << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IGVsZW0KewoJZWxlbSgpIDogbmV4dChudWxscHRyKSB7fQoJaW50IGluZm87CgllbGVtICpuZXh0OwkKfTsKCnZvaWQgcHJpbnQoZWxlbSAqcHRyKTsKdm9pZCB2dm9kKGVsZW0gKnB0cik7CnZvaWQgdWRhbGVuaWUoZWxlbSAqcHRyKTsKdm9pZCBpbnNlcnRfZW5kKGVsZW0gKnB0ciwgaW50IGEpOwoKCmludCBtYWluKCkKewkKCWVsZW0gKmhlYWQgPSBuZXcgZWxlbTsJCgl2dm9kKGhlYWQpOwoJdWRhbGVuaWUoaGVhZCk7Cgljb3V0IDw8ICJORVcgTElTVCIgPDwgZW5kbDsKCXByaW50KGhlYWQpOwp9CgoKdm9pZCB2dm9kKGVsZW0gKmJhc2hrYSkKewoJaW50IG1hc3NpdltdID0geyAxLDIsMiwzLDQsNSw1LDUsNiw2LDcsOCw5IH07CgliYXNoa2EtPmluZm8gPSBtYXNzaXZbMF07Cglmb3IgKGludCBpID0gMTsgaSA8IHNpemVvZihtYXNzaXYpIC8gc2l6ZW9mKGludCk7IGkrKykKCQlpbnNlcnRfZW5kKGJhc2hrYSwgbWFzc2l2W2ldKTsKfQoKdm9pZCB1ZGFsZW5pZShlbGVtICpzcGlzb2spCnsJCgl3aGlsZSAoc3Bpc29rLT5uZXh0ICE9IG51bGxwdHIpCgl7CgkJZWxlbSAqbmV4dGVsZW0gPSBzcGlzb2stPm5leHQ7CgkJaWYgKHNwaXNvay0+aW5mbyA9PSBuZXh0ZWxlbS0+aW5mbykgewoJCQlzcGlzb2stPm5leHQgPSBuZXh0ZWxlbS0+bmV4dDsKCQkJZGVsZXRlIG5leHRlbGVtOwkJCQoJCX0KCQllbHNlCgkJCXNwaXNvayA9IG5leHRlbGVtOwoJfQp9Cgp2b2lkIGluc2VydF9lbmQoZWxlbSAqYmFzaGthLCBpbnQgYSkKewoJZWxlbSAqbGFzdGVsZW0gPSBiYXNoa2E7Cgl3aGlsZSAobGFzdGVsZW0tPm5leHQgIT0gbnVsbHB0cikKCQlsYXN0ZWxlbSA9IGxhc3RlbGVtLT5uZXh0OwoJZWxlbSAqbmV4dGVsZW0gPSBuZXcgZWxlbTsJCgluZXh0ZWxlbS0+aW5mbyA9IGE7CglsYXN0ZWxlbS0+bmV4dCA9IG5leHRlbGVtOwp9Cgp2b2lkIHByaW50KGVsZW0gKnNwaXNvaykKewkJCgl3aGlsZSAoc3Bpc29rICE9IG51bGxwdHIpCgl7CgkJY291dCA8PCBzcGlzb2stPmluZm8gPDwgIiAiOwoJCXNwaXNvayA9IHNwaXNvay0+bmV4dDsKCX0KCWNvdXQgPDwgZW5kbDsKfQ==