#include <string>
#include <iostream>
using namespace std;
template <typename T>
class Lista
{
public:
Lista() : pierwszy(0), ostatni(0){}
void dodajNaKoniec(T dana){
TLista *e = new TLista;
e->dana = dana;
e->nastepny = 0;
e->poprzedni = 0;
if(ostatni){
ostatni->nastepny = e;
e->poprzedni = ostatni;
ostatni = e;
}
else{
pierwszy = e;
ostatni = e;
}
}
void dodajNaPoczatek(T dana){
TLista *e = new TLista;
e->dana = dana;
e->nastepny = 0;
e->poprzedni = 0;
if(pierwszy){
pierwszy->poprzedni = e;
e->nastepny = pierwszy;
pierwszy = e;
}
else{
pierwszy = e;
ostatni = e;
}
}
void wypisz(){
TLista *temp;
for(temp = pierwszy; temp != ostatni; temp = temp->nastepny)
std::cout << temp->dana << ", ";
std::cout << temp->dana << "\n";
}
~Lista() {}
private:
struct TLista{
T dana;
TLista *poprzedni;
TLista *nastepny;
};
TLista *pierwszy;
TLista *ostatni;
};
int main()
{
Lista<int> l;
l.dodajNaKoniec(10);
return 0;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmNsYXNzIExpc3RhCnsKcHVibGljOgogICAgTGlzdGEoKSA6IHBpZXJ3c3p5KDApLCBvc3RhdG5pKDApe30KICAgIHZvaWQgZG9kYWpOYUtvbmllYyhUIGRhbmEpewogICAgICAgIFRMaXN0YSAqZSA9IG5ldyBUTGlzdGE7CiAgICAgICAgZS0+ZGFuYSA9IGRhbmE7CiAgICAgICAgZS0+bmFzdGVwbnkgPSAwOwogICAgICAgIGUtPnBvcHJ6ZWRuaSA9IDA7CiAKICAgICAgICBpZihvc3RhdG5pKXsKICAgICAgICAgICAgb3N0YXRuaS0+bmFzdGVwbnkgPSBlOwogICAgICAgICAgICBlLT5wb3ByemVkbmkgPSBvc3RhdG5pOwogICAgICAgICAgICBvc3RhdG5pID0gZTsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgICAgcGllcndzenkgPSBlOwogICAgICAgICAgICBvc3RhdG5pID0gZTsKICAgICAgICB9CiAgICB9CiAKICAgIHZvaWQgZG9kYWpOYVBvY3phdGVrKFQgZGFuYSl7CiAgICAgICAgVExpc3RhICplID0gbmV3IFRMaXN0YTsKICAgICAgICBlLT5kYW5hID0gZGFuYTsKICAgICAgICBlLT5uYXN0ZXBueSA9IDA7CiAgICAgICAgZS0+cG9wcnplZG5pID0gMDsKIAogICAgICAgIGlmKHBpZXJ3c3p5KXsKICAgICAgICAgICAgcGllcndzenktPnBvcHJ6ZWRuaSA9IGU7CiAgICAgICAgICAgIGUtPm5hc3RlcG55ID0gcGllcndzenk7CiAgICAgICAgICAgIHBpZXJ3c3p5ID0gZTsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgICAgcGllcndzenkgPSBlOwogICAgICAgICAgICBvc3RhdG5pID0gZTsKICAgICAgICB9CiAgICB9CiAKICAgIHZvaWQgd3lwaXN6KCl7CiAgICAgICAgVExpc3RhICp0ZW1wOwogICAgICAgIGZvcih0ZW1wID0gcGllcndzenk7IHRlbXAgIT0gb3N0YXRuaTsgdGVtcCA9IHRlbXAtPm5hc3RlcG55KQogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgdGVtcC0+ZGFuYSA8PCAiLCAiOwogICAgICAgIHN0ZDo6Y291dCA8PCB0ZW1wLT5kYW5hIDw8ICJcbiI7CiAgICB9CiAKICAgIH5MaXN0YSgpIHt9CiAKcHJpdmF0ZToKICAgIHN0cnVjdCBUTGlzdGF7CiAgICAgICAgVCBkYW5hOwogICAgICAgIFRMaXN0YSAqcG9wcnplZG5pOwogICAgICAgIFRMaXN0YSAqbmFzdGVwbnk7CiAgICB9OwogCiAgICBUTGlzdGEgKnBpZXJ3c3p5OwogICAgVExpc3RhICpvc3RhdG5pOwp9OwoKaW50IG1haW4oKQp7CglMaXN0YTxpbnQ+IGw7CglsLmRvZGFqTmFLb25pZWMoMTApOwoJcmV0dXJuIDA7Cn0=