You are on page 1of 3

#include <iostream> #include<stdlib.

h> using namespace std; const unsigned NMAX=3; typedef unsigned adresa; typedef struct nod { int info; adresa urm; }; nod l[NMAX]; int liber[NMAX]; adresa prim, ultim; int nr_elem=0; void init() { int i; prim=ultim=0; for(i=1;i<=NMAX; i++) liber[i]=0; } int eplina() { int i; for(i=1; i<=NMAX; i++) if(liber[i]==0) return 0; return 1; } int evida() { int i; for(i=1; i<=NMAX; i++) if(liber[i]!=0) return 0; return 1; } adresa aloc_mem() { nr_elem++; return nr_elem; } void creare() //adauga un singur elem prima data, cand lista e goala { adresa p; p=aloc_mem(); cout<<"Dati primul element din lista"; cin>>l[p].info; l[p].urm=0; prim=p; ultim=p; } void adaug_primul() { adresa p; if(!eplina()) { p=aloc_mem(); cout<<"Introduceti informatia utila";

cin>>l[p].info; l[p].urm=prim; prim=p; } else cout<<"Memorie plina"; } void adaug_ultimul() { adresa p; if(!eplina()) { p=aloc_mem(); cout<<"Introduceti informatia utila"; cin>>l[p].info; l[p].urm=NULL; l[ultim].urm=p; ultim=p; } else cout<<"Memorie plina"; } void adaug_dupa() { adresa p,q; int x; if(!eplina()) { cout<<"Introdu elem dupa care se adauga"; cin>>x; p=prim; while(l[p].info!=x) p=l[p].urm; //////////////// cout<<prim<<" "<<l[prim].info<<" "<<l[prim].urm; q=aloc_mem(); cout<<"Introduceti informatia utila"; cin>>l[q].info; l[q].urm=l[p].urm; l[p].urm=q; ////////////// cout<<q<<" "<<l[q].info<<" "<<l[q].urm<<endl; cout<<p<<" "<<l[p].urm<<endl; cout<<prim<<" "<<l[prim].info<<" "<<l[prim].urm; cin.get(); //////////////// } else cout<<"Memorie plina"; } void parcurgere() { adresa p; cout<<"Elementele listei sunt:"; p=prim; while(p!=NULL) { cout<<l[p].info<<" "; p=l[p].urm; } cout<<endl; cin.get();

} /*void clear_screen( void ) { #ifdef WIN32 system( "cls" ); #else system( "clear" ); #endif }*/ int main() { int op; do{ system("clear"); //sterge ecranul in MAC; e in stdlib.h //system("cls"); //sterge ecranul in WIN; e in stdlib.h cout<<"Operatii cu liste liniare"<<endl; cout<<"1. Creare"<<endl; cout<<"2. Adaugare in fata primului element"<<endl; cout<<"3. Adaug dupa ultimul element"<<endl; cout<<"4. Adaug dupa un element dat"<<endl; cout<<"5. Sterge primul element"<<endl; cout<<"6. Sterge ultimul element"<<endl; cout<<"7. Sterge inainte de un element dat"<<endl; cout<<"8. Afisare lista"<<endl; cout<<"9. Iesire"<<endl; cin>>op; switch (op) { case (1): creare(); break; case (2): adaug_primul(); break; case (3): adaug_ultimul(); break; case (4): adaug_dupa(); break; case (5): /*df();*/cout<<"5"; break; case (6): /*df();*/cout<<"6"; break; case (7): /*df();*/cout<<"7"; break; case (8): parcurgere(); break; case (9): cout<<"Ai terminat"<<endl; break; default: cout<<"alege o optiune valida"<<endl; break; } cout<<endl<<"apasa o tasta"<<endl; //system("pause"); merge ca getch() dar pe WIN, nu pe MAC cin.get(); }while(op!=9); return 0; }

You might also like