PILA definición y ejemplo en lenguaje c++
INTRODUCCION.
Una pila es un conjunto de
cosas unas sobre otras.
En el lenguaje de programación
se utilizan tipos de estructura de datos llamadas pilas que tienen la misma
función, ya que pueden variar de tamaño y tener ciertas características que cumple
una pila física.
Una pila es un tipo especial
de lista abierta en la que solo se pueden insertar y eliminar nodos en uno de
los extremos de la lista.
DESARROLLO.
Una pila es una lista ordenada
o estructura de datos en la que l modo de acceso a sus elementos es de tipo
LIFO (Last In Firs Out) , ultimo en entrar , es el primero en salir.
A una pila se le pueden añadir
y retirar nuevos nodos únicamente de su parte superior. Se referencia una pila
mediante un apuntador al elemento superior de la misma. El miembro de enlace en
el último nodo de la pila se define NULL , para indicar que se trata de la
parte inferior de la pila misma.
Representación
Gráfica del funcionamiento de una pila en c++
|
Las funciones primarias
utilizadas para manipular una pila son push y pop. La función push crea un
nuevo nodo y lo coloca en la parte superior de la pila. La función pop elimina
un nodo de la parte superior de la pila, liberando la memoria que fue asignada
al nodo retirado, y regresando el valor retirado. La función push coloca un
nuevo nodo en la parte superior de la pila.
CODIGO E IMPLEMENTACION DE UNA PILA
#include <iostream>
int dato;
using namespace std;
struct nodo{
int nro;
struct nodo
*sgte;
};
typedef nodo
*ptrPila;
void menu();
int pop( ptrPila & );
void push( ptrPila &p, int valor );
void mostrar_pila( ptrPila p );
void destruir_pila( ptrPila &p);
int main()
{
ptrPila p =
NULL; // creando pila
int x ; //
numero que devuelve la funcIon pop
int op;
system("color 0b");
do
{
menu(); cin>> op;
switch(op)
{
case 1:
cout<< "\n NUMERO A APILAR: "; cin>> dato;
push( p, dato );
cout<<"\n\n\t\tNumero " << dato << "
apilado...\n\n";
break;
case 2:
x
= pop( p );
cout<<"\n\n\t\tNumero "<< x <<"
desapilado...\n\n";
break;
case 3:
cout << "\n\n MOSTRANDO PILA\n\n";
if(p!=NULL)
mostrar_pila( p );
else
cout<<"\n\n\tPila vacia..!"<<endl;
break;
case 4:
destruir_pila( p );
cout<<"\n\n\t\tPila eliminada...\n\n";
break;
}
cout<<endl<<endl;
system("pause");
system("cls");
}while(op!=5);
system("PAUSE");
}
void menu()
{
cout<<"\n\t IMPLEMENTACION DE PILAS EN C++\n\n";
cout<<" 1. APILAR
"<<endl;
cout<<" 2. DESAPILAR
"<<endl;
cout<<" 3. MOSTRAR PILA "<<endl;
cout<<" 4. DESTRUIR PILA "<<endl;
cout<<" 5. SALIR
"<<endl;
cout<<"\n INGRESE OPCION: ";
}
void destruir_pila( ptrPila &p)
{
ptrPila aux;
while( p !=
NULL)
{
aux = p;
p =
aux->sgte;
delete(aux);
}
}
void mostrar_pila( ptrPila p )
{
ptrPila aux;
aux = p; // apunta al inicio de la lista
while( aux
!=NULL )
{
cout<<"\t"<< aux->nro <<endl;
aux =
aux->sgte;
}
}
int pop( ptrPila &p )
{
int num ;
ptrPila aux;
aux = p ;
num =
aux->nro; // asignamos el primer
vamor de la pila
p =
aux->sgte ;
delete(aux);
return num;
}
void push( ptrPila &p, int valor )
{
ptrPila aux;
aux =
new(struct nodo); // apuntamos al nuevo
nodo creado
aux->nro =
valor;
aux->sgte =
p ;
p = aux ;
}
CONCLUSION.
Las pilas tienen aplicaciones
interesantes. Por ejemplo, siempre que se hace una llamada de función, la
función llamada debe saber como regresar a su llamador, por lo que la dirección
de regreso es introducida en una pila. Si ocurre una serie de llamadas de
función, los valores de regreso sucesivos son introducidos en una pila, en
orden de últimas entradas, primeras salidas, de forma tal que cada función
puede regresar a su llamador. Las pilas aceptan llamadas de función recursivas,
de la misma forma que llamadas normales no recursivas.
Las pilas contienen l espacio
creado para variables automáticas en cada invocación de una función. Cuando la
función regreso a su llamador, el espacio para las variables automáticas de
dicha función es retirado. De la pila, dichas variables de ser conocidas para el
programa.
Además las pilas son
utilizadas por los compiladores en el proceso de evaluar expresiones y de
generar código de lenguaje máquina.
Descarga Libros en c y c++ https://mega.nz/folder/ZckjDaLR#v5Bgwuv3ypM8uxOoKw90Wg
Comentarios
Publicar un comentario
Hola que tal,dime tu opinión