Está en la página 1de 4

/*

Encontrar el primer elemento de una pila.

Nombre: primer elemento


Descripción: Busca el primer elemento en una pila y lo muestra.
pre: p {}
p = {a1,a2,a3,...an}

post: imprimir: "Pila vacía"


imprimir: a1

Ordenar pila elementos de una pila.

Nombre: ordenar elementos


Descripcion: ordenar los elementos de una pila en forma ascendente y en forma
descendente.

Pre: p={}
p={a1,a2,a3…an}

Post: imprimir: pila vacia


Imprimir: forma ascendente: a1,a2,a3…an
Imprimir: forma descendente: an…a3,a2,a1

Codificacion.*/

#include <iostream.h>
#include <conio.h>

//Definicion de la Estructura
struct nodoPila
{
int dato;
nodoPila *sig;};

//Menu principal
int menu()
{
int opc;

clrscr();
cout<<" MENU PRINCIPAL";
cout<<"\n1. Inicializar Pila";
cout<<"\n2. Apilar (push)";
cout<<"\n3. Encontrar primer elemento";
cout<<"\n4. Ordenar elementos";
cout<<"\n5. Salir";
cout<<"\n Dijite Opcion a realizar: ";
cin>>opc;
return opc;
}

//Definicion de funciones
void inicializar(struct nodoPila **);
void apilar(struct nodoPila **, int x);
void primerelemento(struct nodoPila **);
void ordenarelementos(struct nodoPila**);

//Funcion inicializar
void inicializar(struct nodoPila **tope)
{ clrscr();
*tope=NULL;
cout<<"\nPila Inicializada.";
getch();
}

//Funcion apilar
void apilar(struct nodoPila **tope, int dat)
{ clrscr();
struct nodoPila *aux;
aux=new nodoPila;
if(aux==NULL)
{
cout<<"\nMemoria Insuficiente. ";
getch();
}
aux->dato=dat;
aux->sig=*tope;
*tope=aux;
}

//Funcion Encontrar primer elemento

void primerelemento(struct nodoPila **tope)

{clrscr();
int elem;
struct nodoPila *aux;
if (*tope==NULL)
cout<<"\n Pila Vacia ";
else
{ aux = *tope;
do{ if (aux->sig==NULL)
{elem=aux->dato;
cout<<"\n El primer elemento de la pila es: "<<elem;
}
aux = aux->sig;
}while(aux!=NULL);
}
getch();
}

// Funcion Ordenar elementos

void ordenarelementos(struct nodoPila **tope)

{clrscr();
struct nodoPila *aux;
int nums[30], j, i=0, contador=0, n;

if(*tope==NULL)
{cout<<"\n Pila Vacia ";
}
else
{aux=*tope;
while(aux!=NULL)
{nums[i]= aux->dato;
aux=aux->sig;
contador=contador+1;
i++;
}
for(i=1;i<contador-1;i++)
{for(j=1;j<contador-1;j++)
{if(nums[j]>nums[j+1])
{n=nums[j];
nums[j]=nums[j+1];
nums[j+1]=n;
}

}
}

cout << "Decendente: ""\n";


for(i=0;i<=contador-1; i++)
{cout<<nums[i]<<"\n";
}
cout << "\nAcendente: ""\n";
for(i=contador-1; i>=0; i--)
{
cout<<nums[i]<<"\n";
}
}
getch();
}
//Cuerpo principal
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:{primerelemento(&tope);break;}
case 4:{ordenarelementos(&tope);break;}

}
}while(opc!=5);

También podría gustarte