Sunteți pe pagina 1din 4

//stive si cozi

#include <iostream>//pt cout


#include <stdlib.h>
using namespace std;//pt scrierea prescurtata, fara std::cout, etc
typedef int info;
typedef struct element{
info informatie;
element *pointerUrmatorulElement;
} ELEMENT, *PELEMENT;
typedef struct{
PELEMENT inceput;
PELEMENT sfarsit;
} COADA;
void stivaAfisare(PELEMENT capLista);
PELEMENT push(PELEMENT varfStiva, info informatie);//introducere in stiva
PELEMENT pop(PELEMENT varfStiva, info *pointerLaInformatie);//introducere in sti
va
void citireVarfStiva(PELEMENT varfStiva, info *pointerLaInformatie);//citire inf
ormatie din varful stivei
void coadaAfisare(COADA coada);//afisare coada
COADA inserareInCoada(COADA coada, info informatie);//introducere informatie in
coada, la sfarsitul ei
COADA extragereDinCoada(COADA coada, info *pointerLaInformatie);//extragere din
coada
void citireCoada(COADA coada, info *pointerLaInformatie);
int main(){
PELEMENT varfStiva = NULL;
COADA coada = {NULL, NULL};
info informatie;
cout << "Adaug 1, cu push" << endl;
varfStiva = push(varfStiva, 1);
stivaAfisare(varfStiva);
citireVarfStiva(varfStiva, &informatie);
cout << "Citim varful " << informatie << endl << endl;
cout << "Adaug -2, cu push" << endl;
varfStiva = push(varfStiva, -2);
stivaAfisare(varfStiva);
cout << "Adaug 3, cu push" << endl;
varfStiva = push(varfStiva, 3);
stivaAfisare(varfStiva);
varfStiva = pop(varfStiva, &informatie);
cout << "Scoatem cu pop elementul " << informatie << endl;
stivaAfisare(varfStiva);
varfStiva = pop(varfStiva, &informatie);
cout << "Scoatem cu pop elementul " << informatie << endl;
stivaAfisare(varfStiva);
varfStiva = pop(varfStiva, &informatie);
cout << "Scoatem cu pop elementul " << informatie << endl;
stivaAfisare(varfStiva);
varfStiva = pop(varfStiva, &informatie);
citireVarfStiva(varfStiva, &informatie);

cout << "Adaug 1 in coada" << endl;


coada = inserareInCoada(coada, 1);
coadaAfisare(coada);
cout << "Adaug -2 in coada" << endl;
coada = inserareInCoada(coada, -2);
coadaAfisare(coada);
citireCoada(coada, &informatie);
cout << "Citim informatia de la inceputul cozii " << informatie << endl
<< endl;
cout << "Adaug 3 in coada" << endl;
coada = inserareInCoada(coada, 3);
coadaAfisare(coada);
coada = extragereDinCoada(coada, &informatie);
cout << "Extragem din coada elementul " << informatie << endl;
coadaAfisare(coada);
coada = extragereDinCoada(coada, &informatie);
cout << "Extragem din coada elementul " << informatie << endl;
coadaAfisare(coada);
coada = extragereDinCoada(coada, &informatie);
cout << "Extragem din coada elementul " << informatie << endl;
coadaAfisare(coada);
coada = extragereDinCoada(coada, &informatie);
citireCoada(coada, &informatie);

system("PAUSE");//in stdlib
return 0;
}
void stivaAfisare(PELEMENT capLista){
PELEMENT elementCurent = capLista;
if(capLista == NULL){
cout << "Stiva goala" << endl << endl;
return;
}
while(elementCurent!=NULL){
cout << elementCurent->informatie << "\t";
elementCurent = elementCurent->pointerUrmatorulElement;
}
cout << endl << endl;
}
PELEMENT push(PELEMENT varfStiva, info informatie){
if(!varfStiva){//dc stiva goala
varfStiva = new ELEMENT;
if(!varfStiva) cout << "nu mai exista loc in memorie";
else{
varfStiva->informatie = informatie;
varfStiva->pointerUrmatorulElement = NULL;
}
return varfStiva;
}
else{
//adaugam noua informatie
PELEMENT elementAdaugat = new ELEMENT;
if(!elementAdaugat){
cout << "nu mai exista loc in memorie";
return varfStiva;
}
elementAdaugat->informatie = informatie;
elementAdaugat->pointerUrmatorulElement = varfStiva;
return elementAdaugat;
}
}
PELEMENT pop(PELEMENT varfStiva, info *pointerLaInformatie){
if(varfStiva!=NULL){
PELEMENT elementSters = varfStiva;
*pointerLaInformatie = varfStiva->informatie;
varfStiva = varfStiva->pointerUrmatorulElement;
delete elementSters;
}
else cout << "Stiva goala" << endl << endl;
return varfStiva;
}
void citireVarfStiva(PELEMENT varfStiva, info *pointerLaInformatie){
if(varfStiva!=NULL) *pointerLaInformatie = varfStiva->informatie;
return;
}
void coadaAfisare(COADA coada){
PELEMENT elementCurent = coada.inceput;
if(coada.inceput == NULL){
cout << "Coada este goala" << endl << endl;
return;
}
while(elementCurent!=NULL){
cout << elementCurent->informatie << "\t";
elementCurent = elementCurent->pointerUrmatorulElement;
}
cout << endl << endl;
}
COADA inserareInCoada(COADA coada, info informatie){
if(!coada.inceput){//dc coada e goala
coada.inceput = new ELEMENT;
if(!coada.inceput){
cout << "nu mai exista loc in memorie";
return coada;
}
coada.inceput->informatie = informatie;
coada.inceput->pointerUrmatorulElement = NULL;
coada.sfarsit = coada.inceput;
}
else{
//adaugam noua informatie
PELEMENT elementAdaugat = new ELEMENT;
if(!elementAdaugat){
cout << "nu mai exista loc in memorie";
return coada;
}
elementAdaugat->informatie = informatie;
elementAdaugat->pointerUrmatorulElement = NULL;
coada.sfarsit->pointerUrmatorulElement = elementAdaugat;
coada.sfarsit = elementAdaugat;
}
return coada;
}
COADA extragereDinCoada(COADA coada, info *pointerLaInformatie){
if(coada.inceput!=NULL){
PELEMENT elementSters = coada.inceput;
*pointerLaInformatie = coada.inceput->informatie;
coada.inceput = coada.inceput->pointerUrmatorulElement;
delete elementSters;
}
else{
cout << "Coada goala" << endl;
coada.sfarsit = NULL;
}
return coada;
}
void citireCoada(COADA coada, info *pointerLaInformatie){
if(coada.inceput!=NULL) *pointerLaInformatie = coada.inceput->informatie
;
return;
}

S-ar putea să vă placă și