ayuda con un programa de pila en dev c++
Publicado por jorge moody (4 intervenciones) el 17/03/2020 02:03:09
determine el valor mayor y menor de todos los datos almacenados en una pila que contiene numeros enteros
Valora esta pregunta


-1
#include <iostream>
#include <cctype>
using namespace std;
struct nodoPila{
int dato;
struct nodoPila *ptrSiguiente;
};
typedef struct nodoPila NodoPila;
typedef NodoPila *ptrNodoPila;
void empujar(ptrNodoPila *ptrCima, int info);
void imprimePila(ptrNodoPila ptrActual);
int mayor(ptrNodoPila ptrActual);
int menor(ptrNodoPila ptrActual);
int main()
{
ptrNodoPila ptrPila = NULL;
char opcion;
int valor;
cout << "\nIntroducir valores en la pila:\n";
do{
cout << "\nValor: "; cin >> valor;
empujar( &ptrPila, valor );
cout << "\nIntroducir otro valor(S/n): "; cin >> opcion;
opcion = toupper(opcion);
} while (opcion == 'S');
cout << "\nLa pila introducida es: ";
imprimePila(ptrPila);
cout << "\nEl valor maximo es: " << mayor(ptrPila);
cout << "\nEl valor minimo es: " << menor(ptrPila);
cout << endl;
return 0;
}
void empujar(ptrNodoPila *ptrCima, int info)
{
ptrNodoPila ptrNuevo;
ptrNuevo = new NodoPila;
if (ptrNuevo != NULL)
{
ptrNuevo->dato = info;
ptrNuevo->ptrSiguiente = *ptrCima;
*ptrCima = ptrNuevo;
}
}
void imprimePila(ptrNodoPila ptrActual)
{
if (ptrActual == NULL)
cout << "\nLa pila esta vacia" << endl;
else
{
while (ptrActual != NULL)
{
cout << ptrActual->dato << "-> ";
ptrActual = ptrActual->ptrSiguiente;
}
cout << "NULL\n";
}
}
int mayor(ptrNodoPila ptrActual)
{
int max;
if (ptrActual == NULL)
{
cout << "\nLa pila esta vacia" << endl;
}
else
{
max = ptrActual->dato;
while (ptrActual != NULL)
{
if (ptrActual->dato > max)
max = ptrActual->dato;
ptrActual = ptrActual->ptrSiguiente;
}
return max;
}
}
int menor(ptrNodoPila ptrActual)
{
int min;
if (ptrActual == NULL)
{
cout << "\nLa pila esta vacia" << endl;
}
else
{
min = ptrActual->dato;
while (ptrActual != NULL)
{
if (ptrActual->dato < min)
min = ptrActual->dato;
ptrActual = ptrActual->ptrSiguiente;
}
return min;
}
}