Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #define Max 100;
- using namespace std;
- struct nod
- {
- int inf;
- int urm;
- };
- nod lista [Max];
- int s[Max],prim=-1,nr,adr;
- int exista_spatiu();
- void aloca(int&adr);
- void elibereaza(int adr);
- void adauga(int&prim,int x);
- void parcurgere(int prim);
- int cautare(int x);
- void inserare_inainte (int adr,int x);
- void inserare_dupa(int adr,int x);
- void stergere(int adr);
- int main()
- {
- int p,opt,x,y;
- do
- {
- cout<<"1:Creare"<<endl;
- cout<<"2:Parcurgere"<<endl;
- cout<<"3:Cautare"<<endl;
- cout<<"4:insereare dupa"<<endl;
- cout<<"5:insereare inainte"<<endl;
- cout<<"6:stergere"<<endl;
- cout<<"7:iesire"<<endl;
- cout<<"Optiunea";
- cin>>opt;
- switch(opt)
- {
- case 1:cout<<"nod:";
- cin>>x;
- if(exista_spatiu()) adauga(prim,x);
- else
- cout<<"nu exista spatiu";
- break;
- case 2:parcurgere(prim);
- break;
- case 3:cout<<"nod=";
- cin>>x;
- p=cautare(x);
- if(p!=-1)
- cout<<lista[p].inf;
- else
- cout<<x<<"nu exista";
- break;
- case 4:cout<<"nodul dupa care se insereaza =";
- cin>>x;
- p=cautare(x);
- if(p!=-1)
- {
- cout<<"nodul de inserat=";
- cin>>y;
- if(exista_spatiu())
- inserare_dupa(p,y);
- else
- cout<<"nu exista spatiu";
- }
- else cout<<"nu exista nodul"<<x;
- break;
- case 5:cout<<"nodul inaintea caruia se insereaza";
- cin>>x;
- p=cautare(x);
- if(p!=-1)
- {
- cout<<"nodul de inserat=";
- cin>>y;
- if(exista_spatiu())
- inserare_inainte(p,y);
- else
- cout<<"nu exista spatiu";
- }
- else
- cout<<"nu exista nodul"<<x;
- break;
- case 6:cout<<"nod=";
- cin>>x;
- p=cautare(x);
- if(p!=-1)
- steregere(p);
- else
- cout<<"nu exista nodul"<<x;
- break;
- }
- getch();
- }
- while(opt<7&&opt);
- }
- int exista_spatiu()
- {
- if(nr<Max)
- return 1;
- return 0;
- }
- void aloca(int&adr)
- {
- int i=0;
- while(s[i])i++;
- adr=i;
- s[i]=1;nr++;
- }
- void elibereaza(int adr)
- {
- s[adr]=0;nr-;
- if(adr==prim)
- prim=-1;
- }
- void adauga(int &prim,int x)
- {
- int p=prim
- aloca(adr);
- lista[adr].inf=x;
- lista[adr].urm=-1;
- if(prim==adr-1)
- prim=adr;
- else
- {
- while(lista[p].urm!=-1)
- p=lista[p].urm;
- lista[p].urm=adr;
- }
- }
- int cautare(intx)
- {
- int p=prim;
- while(p!=-1&&lista[p].inf!=x)
- p=lista[p].urm;
- return p;
- }
- void inserare_dupa(int adr,int x)
- {
- int p;
- aloca(p);
- lista[p].inf=x;
- lista[p].urm=lista[adr].urm;
- lista[adr].urm=p;
- }
- void inserare_inainte(int adr,int x)
- {
- int p;
- aloca(p);
- lista[p]=lista[adr];
- lista[adr].inf=x;
- lista[adr].urm=p;
- }
- void parcurgere(int prim);
- {
- int p=prim;
- if(prim==-1)
- cout<<"lista vida!";
- else
- {
- while(p!=-1)
- {
- cout<<lista[p].inf<<" ";
- p=lista[p].urm;
- }
- }
- }
- void stergere(int adr)
- {
- int q,p=lista[adr].urm;
- if(p!=-1)
- lista[adr]=lista[p];
- else
- {
- q=prim;
- p=lista[q].urm;
- if(p!=-1)
- {
- while (lista[p].urm!=-1)
- {
- q=p;
- p=lista[p].urm;
- }
- else
- p=prim;
- }
- elibereaza(p);
- }
- }
Add Comment
Please, Sign In to add comment