/* * * Implementáció listával */ #include <iostream> using namespace std; struct elem { elem *elozo; elem *kovetkezo; int ertek; }; /* elem *elso = 0; elem *utolso = 0; int elemek_szama = 0; void beszur( elem *p, int i); void rendezve_beszur( int i); void kiir_elore(); void kiir_hatra(); void felszamol(); */ struct lista { elem *elso; elem *utolso; int elemek_szama; lista(); // inicializal ~lista(); // felszamol void beszur( elem *p, int i); void rendezve_beszur( int i); void kiir_elore(); void kiir_hatra(); }; int main() { int ii; lista l; // inicializal while ( cin >> ii ) { l.rendezve_beszur(ii); } cout << "elemszam = " << l.elemek_szama << endl; l.kiir_elore(); l.kiir_hatra(); return 0; // felszamol } lista::lista() { elso = utolso = 0; // this->elso = this->utolso = 0; elemek_szama = 0; // this->elemek_szama = 0; } lista::~lista() { while ( elso ) // this->elso { elem *kurrens = elso; elso = kurrens->kovetkezo; // elso->elozo = 0; // --elemek_szama; delete kurrens; } } void lista::beszur( elem *p, int ii) { elem *uj = new elem; uj->ertek = ii; uj->elozo = uj->kovetkezo = 0; if ( !elso ) // ures a lista { elso = utolso = uj; } else if ( !p ) // nem ures lista vegere appendalunk { uj->elozo = utolso; utolso->kovetkezo = uj; utolso = uj; } else if ( p == elso ) // nem ures lista elso poziciojara szurunk be { uj->kovetkezo = elso; elso->elozo = uj; elso = uj; } else // nem ures lista kozbulso poziciojara szurunk be p ele { uj->kovetkezo = p; uj->elozo = p->elozo; uj->elozo->kovetkezo = uj; p->elozo = uj; } ++elemek_szama; } void lista::rendezve_beszur( int ii ) { elem *kurrens = elso; while ( kurrens && ii > kurrens->ertek ) { kurrens = kurrens->kovetkezo; } beszur( kurrens, ii); } void lista::kiir_elore() { elem *kurrens = elso; while ( kurrens ) { cout << kurrens->ertek << endl; kurrens = kurrens->kovetkezo; } } void lista::kiir_hatra() { elem *kurrens = utolso; while ( kurrens ) { cout << kurrens->ertek << endl; kurrens = kurrens->elozo; } }