Anteprima
Vedrai una selezione di 3 pagine su 6
Programma C++ - Pila versione completa Pag. 1 Programma C++ - Pila versione completa Pag. 2
Anteprima di 3 pagg. su 6.
Scarica il documento per vederlo tutto.
Programma C++ - Pila versione completa Pag. 6
1 su 6
Disdici quando vuoi 162x117
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Sintesi
Pila.


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.
Estratto del documento

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;

Dettagli
Publisher
6 pagine
457 download