*Nombre: Primer elemento
Funcion: Muestra el primer elemento de la pila
Pre: p={ }
p={e1,e2,e3...en}
Post: "Pila vacia"
p={e1}
Funcion: Muestra el primer elemento de la pila
Pre: p={ }
p={e1,e2,e3...en}
Post: "Pila vacia"
p={e1}
*Nombre: Ordenar elemento
Funcion: Ordena los elementos de la pila
Funcion: Ordena los elementos de la pila
Pre: p={ }
p={e1,e2,e3...en}
Post: "Pila vacia"
p={e1>e2>e3....>en}
p={e1,e2,e3...en}
Post: "Pila vacia"
p={e1>e2>e3....>en}
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
struct nodoPila
{ int dato;
nodoPila *sig;
};
struct nueva
{
int dato;
struct nueva *sig;
};struct nueva *primero,*ultimo;
int menu()
{ int opc;
clrscr();
cout<<" MENU PRINCIPAL";
cout<<"\n1. Inicializar Pila";
cout<<"\n2. Apilar (push)";
cout<<"\n3. Recorrer Pila";
cout<<"\n4. Desapilar (pop)";
cout<<"\n5. Contar elementos";
cout<<"\n6. Numero mayor";
cout<<"\n7. Primer elemento";
cout<<"\n8. Mostrar ordenada";
cout<<"\n9. Salir";
cout<<"\n\n\nOpcion: ";
cin>>opc;
return opc;
}
void inicializar(struct nodoPila **);
void desapilar(struct nodoPila **);
void recorrer(struct nodoPila **);
void apilar(struct nodoPila **, int x);
void recorrer(struct nodoPila **tope)
{ struct nodoPila *aux;
if(*tope==NULL)
cout<<"\nPila Vacia. ";
else
{ aux=*tope;
while(aux!=NULL)
{ cout<<"Elemento: "<<aux->dato<<"\n";
aux=aux->sig;
}
}
getch();
}
//Funcion inicializar la pila
void inicializar(struct nodoPila **tope)
{ *tope=NULL;
cout<<"\nPila Inicializada.";
getch();
}
//Funcion apilar
void apilar(struct nodoPila **tope, int dat)
{ struct nodoPila *aux;
aux=new nodoPila;
if(aux==NULL)
{ cout<<"\nMemoria Insuficiente. ";
getch();
}
aux->dato=dat;
aux->sig=*tope;
*tope=aux;
}
//Funcion desapilar
void desapilar(struct nodoPila **tope)
{ struct nodoPila *aux;
if(*tope==NULL)
cout<<"Pila Vacia";
else
{ aux=*tope;
cout<<"Elemento eliminado: "<<(*tope)->dato;
*tope=(*tope)->sig;
delete aux;
}
getch();
}
//Funcion Contar
void contar(struct nodoPila **tope)
{ clrscr();
struct nodoPila *aux;
int z=0;
if(*tope==NULL)
cout<<"Pila Vacia";
else
{ aux=*tope;
while(aux!=NULL)
{ z++;
aux=aux->sig;
}
cout<<"\nEl numero de elementos encontrados es : "<<z<<"\n";
}
getch();
}
//Funcion del mumero mayor
void nummayor(struct nodoPila **tope)
{ clrscr();
struct nodoPila *aux;
int nmy=0;
if(*tope==NULL)
cout<<"Pila vacia";
else
{ aux=*tope;
while(aux!=NULL)
{ if(nmy<aux->dato)
nmy=aux->dato;
aux=aux->sig;
}
cout<<"El numero mayor es: "<<nmy;
}
getch();
}
//Funcion Primer elemento
void primerelemento(struct nodoPila **tope )
{ clrscr();
struct nodoPila *aux;
int dat=0;
aux=*tope;
if(aux==NULL)
cout<<"Pila Vacia";
else{
while(aux!=NULL){
dat=aux->dato;
aux=aux->sig;
}
cout<<"\nEl primer elememto es "<<dat;
}
getch();
}
//Funcion ordenar Elementos
void ordenar(struct nodoPila **tope)
{ struct nodoPila *auxi;
struct nueva *nue,*aux,*ant;
if(*tope==NULL)
cout<<"Pila vacia";
else{
auxi=*tope;
while(auxi!=NULL){
if(primero==NULL){
primero=new nueva;
primero->dato=auxi->dato;
primero->sig=NULL;
ultimo=primero;
}
else
{ nue=new nueva;
nue->dato=auxi->dato;
aux=primero;
while(aux!=NULL&&aux->dato<nue->dato){
ant=aux;
aux=aux->sig;
}
if(aux==primero){
nue->sig=primero;
primero=nue;
}else{
if(aux==NULL){
ultimo->sig=nue;
nue->sig=NULL;
ultimo=nue;
}else
nue->sig=aux;
ant->sig=nue;
}
}
auxi=auxi->sig;
}
aux=primero;
while(aux!=NULL){
cout<<aux->dato<<"\t";
aux=aux->sig;
}
getch();
}
}
int main()
{ struct nodoPila *tope;
int dat,opc;
do
{ opc=menu();
switch(opc)
{
case 1:{inicializar(&tope);break;}
case 2:{ cout<<"\nEntre el dato: ";
cin>>dat;
apilar(&tope,dat);
break;
}
case 3:{recorrer(&tope);break;}
case 4:{desapilar(&tope);break;}
case 5:{contar(&tope);break;}
case 6:{nummayor(&tope);break;}
case 7:{primerelemento(&tope);break;}
case 8:{cout<<" La lista en Orden es\n\n";ordenar(&tope);break;}
}
}while(opc!=9);
return 0;
}
No hay comentarios:
Publicar un comentario