online: 13; azi: 258; total: 50713 Manual clasa a xi a - Implementarea structurilor de date - Lista liniara

Probleme Rezolvate



Manual clasa a Xi a

Implementarea structurilor de date

Lista liniara

Se elimină din coadă numerele pare.
# include < iostream >
# include < fstream >
# include < string >
# include < sstream >
struct Nod {
int val;
Nod* urm;
};
struct Coada {
Nod* inceput ;
Nod* sfarsit ;
};
void init_coada (Coada& coada) {
coada.inceput = nullptr ;
coada.sfarsit = nullptr ;
}
bool coada_goala ( const Coada& coada) {
return coada.inceput == nullptr ;
}
void push (Coada& coada, int val) {
Nod* nod_nou = new Nod{val, nullptr };
if ( coada_goala (coada)) {
coada.inceput = nod_nou ;
} else {
coada.sfarsit ->urm = nod_nou ;
}
coada.sfarsit = nod_nou ;
}
int pop (Coada& coada) {
if ( coada_goala (coada)) {
throw std :: runtime_error ( "Coada este goala." );
}
Nod* nod_vechi = coada.inceput ;
int val = nod_vechi ->val;
coada.inceput = nod_vechi ->urm;
if ( coada.inceput == nullptr ) {
coada.sfarsit = nullptr ;
}
delete nod_vechi ;
return val;
}
void elimina_numere_pare (Coada& coada) {
Coada coada_noua ;
init_coada ( coada_noua );
while (! coada_goala (coada)) {
int numar = pop (coada);
if ( numar % 2 != 0 ) {
push ( coada_noua , numar );
}
}
coada = coada_noua ;
}
int main () {
std :: ifstream fisier ( "numere.txt" ) ;
std :: string linie;
std :: getline ( fisier , linie);
fisier. close ();
std :: istringstream iss (linie) ;
Coada coada ;
init_coada (coada);
int numar ;
while ( iss >> numar ) {
push (coada, numar );
}
elimina_numere_pare (coada);
while (! coada_goala (coada)) {
std :: cout << pop (coada) << " " ;
}
return 0 ;
}