Pagina de start a forumului Hacking4all.MyForum.ro
Inregistrare • Cautare • FAQ • Membri • Grupuri • Autentificare
Stiva si coada [ descrierea unei probleme clasice ]

 
Raspunde la subiect    Pagina de start a forumului Hacking4all.MyForum.ro » Programare / Scripting Subiectul anterior
Subiectul urmator
Stiva si coada [ descrierea unei probleme clasice ]
Autor Mesaj
OvaS
Administrator
Administrator


Data inscrierii: 29/Aug/2007
Mesaje: 68
Localitate: Calarasi

Mesaj Stiva si coada [ descrierea unei nereguli clasice ] Raspunde cu citat (quote)
Pentru inceput :
Stiva este o structura de date abstracta pentru care atat operatia
de inserare a unui element in structura,cat si operatia de extragere
a unui element se realizeaza la un solitar capat,denumit varful stivei.


Coada este o structura de date abstracta pentru care operatia de inserare a unui
element se realizeaza la un capat, in timp ce operatia de extragere a unui
element se realizeaza la celalalt capat.

Rezolvarea celor doua dificultăți clasice :



Stiva pentru inceput :

Code:

#include <conio.h>
#include <string.h>
#include <iostream.h>
struct stiva { int nr;
char nume[20];
stiva *leg;
}*vf,*p;
int n;
void creare()
{ cout<<"nr de noduri ";
cin>>n;
for(int i=1;i<=n;i++) { p=new stiva;
cout<<"dati nr crt : "; cin>>p->nr;
cout<<"dati numele : "; cin>>p->nume;
p->leg=vf;
vf=p;
}
}
void afis()
{ cout<<"lista elementelor din stiva este : "<<endl;
p=vf;
while(p) { cout<<p->nr<<" "<<p->nume<<endl;
p=p->leg;
}
}
void adaugare()
{ p=new stiva;
cout<<"dati un nod de adaugat : "; cin>>p->nr;
cout<<"dati numele : "; cin>>p->nume;
p->leg=vf;
vf=p;
}
void eliminare()
{ if(!vf) cout<<"nu se poate!";
else { p=vf;
vf=vf->leg;
delete p;
cout<<"s-a eliminat un element"<<endl;
}
}
void sortare()
{ for(p=vf;p->leg!=0;p=p->leg)
for(stiva *q=p->leg;q!=0;q=q->leg)
if(p->nr>q->nr) { int aux=p->nr;
p->nr=q->nr;
q->nr=aux;
char au[20];
strcpy(au,p->nume);
strcpy(p->nume,q->nume);
strcpy(q->nume,au);
}
}
void inserare()
{ int x;
char aux[20];
stiva *q;
cout<<"datzi nr crt : "; cin>>x;
cout<<"datzi numele : "; cin>>aux;
if(x<=vf->nr) { p=new stiva;
p->nr=x;
strcpy(p->nume,aux);
p->leg=vf;
vf=p;
}
else { p=vf;
while(p->leg->nr<x) p=p->leg;
q=new stiva;
q->nr=x;
strcpy(q->nume,aux);
q->leg=p->leg;
p->leg=q;
}
}
void extragere()
{ int x;
stiva *q;
cout<<"datzi elementul d eliminat (nr crt) : ";
cin>>x;
if(vf->nr==x) eliminare();
else { p=vf;
while(p->leg->nr!=x) p=p->leg;
q=p->leg;
p->leg=q->leg;
delete q;
}
}
void main()
{ clrscr();
creare();
afis();
adaugare();
afis();
adaugare();
sortare();
afis();
eliminare();
afis();
inserare();
afis();
extragere();
afis();
getch();
}


Coada :

Code:

#include <conio.h>
#include <iostream.h>
struct coada { int info;
coada *leg;
};
coada *p,*q,*r;
int n,i;
void creare()
{ cout<<"dati nr d elemente : ";
cin>>n;
p=new coada;
cout<<"dati info primului element : ";
cin>>p->info;
p->leg=NULL;
q=p;
for(i=2;i<=n;i++) { r=new coada;
cout<<"dati info elementului "<<i<<" : ";
cin>>r->info;
r->leg=NULL;
q->leg=r;
q=r;
}
}
void adaugare()
{ r=new coada;
cout<<"dati info elementului adaugat : ";
cin>>r->info;
r->leg=NULL;
q->leg=r;
q=r;
}
void eliminare()
{ cout<<"se sterge elementul d p 1# poz : "<<p->info<<endl;
r=p;
p=p->leg;
delete r;
}
void sortare()
{ coada *s;
for(r=p;r->leg!=NULL;r=r->leg)
for(s=r->leg;s!=NULL;s=s->leg)
if(r->info>s->info) { int aux=r->info;
r->info=s->info;
s->info=aux;
}
cout<<"s-a sortat lista "<<endl;
}
void inserare()
{ int x;
cout<<"dati elementul de inserat : ";
cin>>x;
if(x<p->info) { r=new coada;
r->leg=p;
r->info=x;
p=r;
}
else if(x>q->info) { r=new coada;
r->leg=NULL;
r->info=x;
q->leg=r;
q=r;
}
else { r=p;
while(r->leg->info<x) r=r->leg;
coada *s=new coada;
s->info=x;
s->leg=r->leg;
r->leg=s;
}
}
void afisare()
{ coada *r;
for(r=p;r!=NULL;r=r->leg) cout<<r->info<<" ";
cout<<endl;
}
void extragere()
{ int x;
cout<<"dati elementul care trebuie eliminat : ";
cin>>x;
if(x==p->info) { coada *r=p;
p=p->leg;
delete r;
}
else { coada *r=p;
while(r->leg->info!=x && r->leg->leg!=NULL) r=r->leg;
if(r->leg->info==x) { coada *s;
s=r->leg;
r->leg=r->leg->leg;
delete s;
}
else cout<<"elementul nu se gaseste in lista "<<endl;
}
}
void main()
{ clrscr();
creare();
afisare();
sortare();
afisare();
adaugare();
afisare();
sortare();
afisare();
eliminare();
afisare();
inserare();
afisare();
extragere();
afisare();
extragere();
afisare();
getch();
}
30/08/2007 13:58 Vezi profilul utilizatorului Trimite mesaj privat
tcapital
Junior
Junior


Data inscrierii: 20/Iul/2012
Mesaje: 5
Localitate: Great Britain

Mesaj Raspunde cu citat (quote)
We have the way the country is not always so easy to find something interesting on the Internet!
31/08/2012 20:45 Vezi profilul utilizatorului Trimite mesaj privat
tcapital
Junior
Junior


Data inscrierii: 20/Iul/2012
Mesaje: 5
Localitate: Great Britain

Mesaj Raspunde cu citat (quote)
Numerous people will be benefited from your writing. Cheers!
02/09/2012 00:24 Vezi profilul utilizatorului Trimite mesaj privat
tcapital
Junior
Junior


Data inscrierii: 20/Iul/2012
Mesaje: 5
Localitate: Great Britain

Mesaj Raspunde cu citat (quote)
I will recommend all my friends to read this.
03/09/2012 06:29 Vezi profilul utilizatorului Trimite mesaj privat
tcapital
Junior
Junior


Data inscrierii: 20/Iul/2012
Mesaje: 5
Localitate: Great Britain

Mesaj Raspunde cu citat (quote)
Strange article! She would have me as interested, but not! Anyway, thank you. Sorry for my English i am from Kiev))))
04/09/2012 09:35 Vezi profilul utilizatorului Trimite mesaj privat
Afiseaza mesajele pentru a le previzualiza:    
Raspunde la subiect    Pagina de start a forumului Hacking4all.MyForum.ro » Programare / Scripting Ora este GMT + 3 ore
Pagina 1 din 1

 
Mergi direct la: 
Nu puteti crea un subiect nou in acest forum
Nu puteti raspunde in subiectele acestui forum
Nu puteti modifica mesajele proprii din acest forum
Nu puteti sterge mesajele proprii din acest forum
Nu puteti vota in chestionarele din acest forum


Powered by phpBB © 2001, 2005 phpBB Group
Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro