PILAS
PILAS
CORPORATIVO UTESA
“Universidad del Conocimiento para toda la Vida”
UTESA VIRTUAL INF 214-03
ESTRUCTURA DE DATOS
PROFESOR: TORIBIO RODRIGUEZ
PEDRO MAIRONI TORIBIO 2-17-1983
PILAS
Una pila es un tipo especial de lista abierta en la que sólo se pueden insertar y eliminar
nodos en uno de los extremos de la lista. Estas operaciones se conocen como "push" y
"pop", respectivamente "empujar" y "tirar". Además, las escrituras de datos siempre
son inserciones de nodos, y las lecturas siempre eliminan el nodo leído.
Estas características implican un comportamiento de lista LIFO (Last In First Out), el
último en entrar es el primero en salir. El símil del que deriva el nombre de la
estructura es una pila de platos. Sólo es posible añadir platos en la parte superior de la
pila, y sólo pueden tomarse del mismo extremo.
Es evidente, que una pila es una lista abierta. Así que sigue siendo muy importante que
nuestro programa nunca pierda el valor del puntero al primer elemento, igual que pasa con las
listas abiertas. Teniendo en cuenta que las inserciones y borrados en una pila se hacen siempre
en un extremo, lo que consideramos como el primer elemento de la lista es en realidad el
último elemento de la pila.
Por analogía con objetos cotidianos, una operación apilar equivaldría a colocar un plato
sobre una pila de platos, y una operación retirar a retirarlo.
• Implementación de recursividad.
Una pila cuenta con 2 operaciones imprescindibles: apilar y desapilar, a las que en las
implementaciones modernas de las pilas se suelen añadir más de uso habitual.
Vacía: devuelve cierto si la pila está vacía o falso en caso contrario (empty).
Una pila típica es un área de la memoria de los computadores con un origen fijo y un tamaño
variable. Al principio, el tamaño de la pila es cero. Un puntero de pila, por lo general en forma
de un registro de hardware, apunta a la más reciente localización en la pila; cuando la pila
tiene un tamaño de cero, el puntero de pila de puntos en el origen de la pila.
pNodo nuevo;
nuevo = (pNodo)malloc(sizeof(tipoNodo));
nuevo->valor = v;
nuevo->siguiente = *pila;
*pila = nuevo;
}
Algoritmo de la función "pop":
Hacemos que nodo apunte al primer elemento de la pila, es decir a Pila.
a leer y borrar.
nodo = *pila;
if(!nodo)
*pila = nodo->siguiente;
v = nodo->valor;
/* Borrar el nodo */
26
free(nodo);
return v;
}
Algoritmo | Implementacion de Pilas(Ejemplo):
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream>
#include <string.h>
struct Nodo {
string letra;
Nodo *siguiente;
};
int main(){
string palind;
string palind2;
string letra;
string saca;
int opcion2;
char opcion;
do
system("cls");
printf("\t\t\t---MENU---");
scanf("%d", &opcion2);
switch (opcion2)
case 1: system("cls");
do{
InsertarPila(pila, letra);
palind += letra;
getch();
break;
case 2: system("cls");
while(pila != NULL){
SacarPila(pila, saca);
palind2 += saca;
if(palind == palind2){
}else{
getch();
break;
case 3: system("cls");
getch();
break;
default: system("cls");
getch();
}while(opcion2 != 3);
return 0;
}
void InsertarPila(Nodo *&pila, string letra){
nuevo->letra = letra;
nuevo->siguiente = pila;
pila = nuevo;
letra = aux->letra;
pila = aux->siguiente;
free(aux);