Característica de una Pila
* Los elementos se eliminan en orden
inverso al que se insertaron
* El último elementos que se inserta
en la pila es el primero en salir
* Estructura LIFO: Last In First Out
Ejemplos reales
Pila de platos o Libros
Ordenamiento de latas en conserva de los supermercados
Envase de pelotas de Tenis
Cargador de Armas AutomáticasV
Características
La representación gráfica típica:
El elementos superior se llama TOPE
No se pueden extraer los elementos C, B y A sin antes extraer D
B
A
D
C
El uso de las pilas es independiente de
la implementación interna
Operaciones Elementales
Insertar o agregar un elemento a la Pila:
PUSH
También se puede decir poner o apilar
NO existe limite o restricción para agregar elementos (crece indefinidamente)
Quitar un elemento de la Pila: POP
Sacar o desempilar
Operaciones Elem. (cont)
Ejemplo:
push push push pop push
Pila
vacía
Mas Operaciones
Comprobar si la pila está vacía.
Operación necesaria para saber si se pueden
eliminar elementos
NO se puede eliminar de una pila vacía
Otras:
Obtener un elemento de la pila
Imprimir los elementos de la pila
Ver el elemento en el tope de la pila sin
removerlo
Implementaciones
Las pilas son estructuras de datos fundamentales: no están definidas en
los Lenguajes de Programación como los registros
Las pilas se pueden implementar mediante dos opciones:
Arreglos (opción estática)
Listas Enlazadas (opción dinámica)
Implementación con arreglos
Se necesita un vector de tamáño N yuna variable numrica llamada tope que indique la posicion del ultimo elemento colocado en la pila (vector).
Previamente se limita el maximo numero de elementos que la pila puede
contener (tamao del vector). Ejemplo:
#define N 10
Implementación
Usando estructuras en C se puede usar una sola variable que tenga a:
Los elementos de la pila (el vector) y,La posición del tope
*************_______________________________________**************
Implementación: push
La función de inserción en C sería:
void push (pila *p, int dato)
{ p->tope = p->tope + 1;
p->dato[p->tope] dato;
}
p->tope: Posición de elemento al tope
de la pila
Implementación: pop
int pop (pila *p)
{ int dato;
dato p->dato[p->tope];
p->tope = p->tope - 1;
return (dato);
}
No hay comentarios:
Publicar un comentario