// linlista.cpp // Vesa Lappalainen 22.3.2000 #include using std::cout; using std::bad_alloc; using std::cerr; class cTaulukko; // etukäteisesittely class cAlkio { int i; cAlkio *seuraava; public: cAlkio(int ii) { i = ii; seuraava = 0; } int getI() const { return i; } friend cTaulukko; }; class cTaulukko { cAlkio *eka; cAlkio *viimeinen; cTaulukko(const cTaulukko &t) { } void operator=(const cTaulukko &t) { } public: cTaulukko(int ) { eka = 0; viimeinen = 0; } ~cTaulukko(); void lisaa(int i); void tulosta() const; }; cTaulukko::~cTaulukko() { cAlkio *p; while ( eka ) { p = eka; eka = p->seuraava; delete p; } } void cTaulukko::lisaa(int i) { cAlkio *uusi; try { uusi = new cAlkio(i); } catch ( bad_alloc ) { // tai catch ( ... ) cerr << "Muisti loppu"; return; } if ( eka ) viimeinen->seuraava = uusi; else eka = uusi; viimeinen = uusi; } void cTaulukko::tulosta() const { cAlkio *p; p = eka; while ( p ) { int i = p->getI(); cout << i << " "; p = p->seuraava; } cout << "\n"; } int main(void) { cTaulukko luvut(7); cTaulukko luvut2(7); luvut.lisaa(0); luvut.lisaa(2); // luvut2 = luvut; // Vaatisi sijoitusoperaattorin tekemisen!!! luvut.tulosta(); return 0; }