/* * * 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 elejere_fuz( int i); // void vegere_fuz( int i); void beszur( elem *p, int i); void rendezve_beszur( int i); void kiir_elore(); void kiir_hatra(); void felszamol(); int main() { int ii; while ( cin >> ii ) { rendezve_beszur(ii); } cout << "elemszam = " << elemek_szama << endl; kiir_elore(); kiir_hatra(); felszamol(); cout << "elemszam = " << elemek_szama << endl; return 0; } void 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 rendezve_beszur( int ii ) { elem *kurrens = elso; while ( kurrens && ii > kurrens->ertek ) { kurrens = kurrens->kovetkezo; } beszur( kurrens, ii); } void kiir_elore() { elem *kurrens = elso; while ( kurrens ) { cout << kurrens->ertek << endl; kurrens = kurrens->kovetkezo; } } void kiir_hatra() { elem *kurrens = utolso; while ( kurrens ) { cout << kurrens->ertek << endl; kurrens = kurrens->elozo; } } void felszamol() { while ( elso ) { elem *kurrens = elso; elso = kurrens->kovetkezo; // elso->elozo = 0; // --elemek_szama; delete kurrens; } elso = 0; utolso = 0; elemek_szama = 0; }