online: 3; azi: 109; total: 52115 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 concatenează două cozi, adăugând a doua coadă la sfârşitul primei cozi.
# 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 ;
}
void concateneaza_cozi (Coada& coada1, Coada& coada2) {
if ( coada_goala (coada1)) {
coada1 = coada2;
} else if (! coada_goala (coada2)) {
coada1.sfarsit->urm = coada2.inceput;
coada1.sfarsit = coada2.sfarsit;
}
init_coada (coada2);
}
int main () {
Coada coada1, coada2;
init_coada (coada1);
init_coada (coada2);
// Citirea numerelor pentru coada1 din fisierul "numere1.txt"
std :: ifstream fisier1 ( "numere1.txt" ) ;
std :: string linie1;
std :: getline (fisier1, linie1);
fisier1. close ();
std :: istringstream iss1 (linie1) ;
int numar1;
while (iss1 >> numar1) {
push (coada1, numar1);
}
// Citirea numerelor pentru coada2 din fisierul "numere2.txt"
std :: ifstream fisier2 ( "numere2.txt" ) ;
std :: string linie2;
std :: getline (fisier2, linie2);
fisier2. close ();
std :: istringstream iss2 (linie2) ;
int numar2;
while (iss2 >> numar2) {
push (coada2, numar2);
}
concateneaza_cozi (coada1, coada2);
// Afisarea elementelor din coada1 dupa concatenare
while (! coada_goala (coada1)) {
std :: cout << front (coada1) << " " ;
pop (coada1);
}
return 0 ;
}