vuoi
o PayPal
tutte le volte che vuoi
Semplice programma in C++ che permette di utilizzare una pila e di fare tutto cio che si vuole al suo interno,dall'insierimento alla modifica alla ricerca al suo interno, e tanti altri opzioni.
t=coda(p);
show(t);
}
pila::pila(const pila & p1)
{ copy(p,p1.p);
}
pila::~pila() //Distruttore
{
clear();
}
pila pila:: operator=(const pila & p1)
{ clear();
copy(p,p1.p);
return *this;
}
void pila::copy(P & p2, const P p1)
{ if(p1)
{ p2=new record;
p2->elem=p1->elem;
copy(p2->prec,p1->prec);
}
else p2=0;
}
void pila::push(int e)
{
P q;
q= new record;
q->elem=e;
q->prec=p;
p=q;
}
void pila::pop(int & e)
{
if(p) {
e=p->elem;
P q;
q=p;
p=p->prec;
delete q;
}
}
void pila::top()
{ if(p)
{ �
cout<<"\n L'elemento : "<<p->elem;
}
else cout<<"\n Non ci sono elementi nella pila ";
}
int pila::vuota()
{
return(p==0);
}
int pila::piena()
{
return(0);
}
void pila::clear()
{
int e;
if(p) { pop(e);
clear();
}
}
void pila::visualizza()
{ P q;
q=p;
visual();
p=q;
}
void pila::visual()
{ if(p)
{ top();
p=p->prec;
visual();
}
}
void pila::ricerca()
{ P h=0;
int el, i=0 ;
cout<<"\n Inserisci elemento da ricercare ";
cin>>el;
trova(el,p,i,h); �
cout<<"\n L'elemento stato trovato ("<<i<<") volte" ;
}
void trova (int el, P p, int & i, P & t)
{ if(p)
{ if(el==p->elem)
{ i++;
t=p;
}
p=p->prec;
trova(el,p,i,t);
}
}
void pila::ordpila()
{ P p1=p;
bouble(p1);
}
void bouble(P & p1)
{ if(p1->prec)
{ P p2=p1;
scambio(p1,p2->prec);
bouble(p1->prec);
}
}
void scambio(P & p1,P & p2)
{ int tmp;
if(p2)
{ if((p1->elem)>(p2->elem))
{ tmp = p1->elem;
p1->elem= p2->elem;
p2->elem = tmp;
}
scambio(p1, p2->prec);
}
}
void pila::cancella()
{ int a,i;
cout<<"\n Inserisci elemento da cancellare ";
cin>>a;
P q=0,t;
trova(a,p,i,q);
if(q)
{ t=q->prec;
if(q->prec)
{
*q=*q->prec;
delete t;
cout<<"\n\a ELEMENTO CANCELLATO ";
}
else
{
pop(i);
cout<<"ELEMENTO CANCELLATO ";
}
}
else cout<<"\n\a Non esiste questo elemento nella pila \n 'Impossibile
cancellare' ";
} main()
{
pila A;
int e, scelta=-1;
do
{ cout<<"\n MENU ";
cout<<"\n Inserisci elemento in testa alla pila ---1";
cout<<"\n Preleva elemento in testa alla pila ---2";
�
cout<<"\n Verifica se la pila vuota ---3";
�
cout<<"\n Verifica se la pila piena ---4";
cout<<"\n Visualizza elemento i testa alla pila ---5";
cout<<"\n Cancella tutta la pila ---6";
cout<<"\n Visualizza elenco della pila ---7";
cout<<"\n Ricerca elemento ---8";
cout<<"\n Ordina pila ---9";
cout<<"\n Cancella elemento ---10";
cout<<"\n Visualizza elemento in coda ---11";
cout<<"\n ESCI ---0";
cout<<"\n\n Inserisci scelta : ";
cin>>scelta;
switch(scelta)
{
case 1:
cout<<"\n Inserisci il valore dell'elemento da inserire in testa : ";
cin>>e;
A.push(e);
break;
case 2: �
if(!A.vuota()) //se la pila non vouta
{ A.pop(e); �
cout<<"\n L'elemento in testa alla pila : "<<e;
} �
else cout<<"\n\n LA PILA VUOTA \a\n\n";
break;
case 3: �
if(A.vuota()) cout<<"\n\a La pila vuota !!\n";
�
else cout<<"\n La pila non vuota !\n";
break;
case 4: �
if(A.piena()) cout<<"\n la pila piena !!";
�
else cout<<"\n La pila non piena !";
break;
case 5:
A.top();
break;
case 6:
A.clear();
break;