BUSCAR
INDICE
INDICE DEL TEMA
OBJETIVOS
TEORIA
PALABRAS RESERVADAS
GLOSARIO
EJERCICIOS
RESUELTOS
AUTOEVALUACION
PROPUESTOS
ERRORES
ESTADISTICAS
INICIO
FAQS
LINKS
RECOMIENDANOS
QUIENES SOMOS
MAPA DEL WEB
COLABORAR
Tema 16 Estructuras de Datos
Teoría 16.5: Pilas

La pila es una versión restringida de una lista enlazada. A una pila se le pueden añadir y retirar nuevos nodos únicamente de su parte superior. Por esta razón, se conoce una pila como una estructura de datos como últimas entradas, primeras salidas (LIFO por last-in, first-out). 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 a NULL, para indicar que se trata de la parte infereior de la pila misma.

La diferencia entre una pila y una lista enlazada es que en una lista enlazada, las inserciones y borrados pueden ocurrir en cualquier parte, pero en una pila únicamente en su parte superior.

Las funciones primarias 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 push está formada de tres pasos:

  1. Crear un nuevo nodo llamando a malloc, asignando la posición de la memoria asignada a newPtr, asignando el *topPtr valor a colocarse en la pila a newptr->data, y asignar NULL a newPtr-nextPtr.
  2. Asignar *topPtr (el apuntador a la parte superior de la pila) a newPtr->nextPtr, el miembro de enlace de newPtr ahora apunta al nodo superior anterior.
  3. Asigna newPtr a *topPtr ,apunta ahora a la nueva parte superior de la pila.

La función pop elemina un nodo de la parte superior de la pila, liberando la memoria que fue asignada al nodo retirado, y regresando el valor retirado.Consiste en 5 pasos:

  1. Asigna topPtr a tempPtr (tempPtr se utilizará para liberar la memoria no necesaria).
  2. Asigna (*topPtr)->data a popValue (guarda el valor almacenado en el nodo superior).
  3. asigna (*topPtr)->nextPtr a *topPtr ( asigna *topPtr la dirección del nodo superior).
  4. Libera la memoria a la cual apunta tempPtr.
  5. Regresa popValue al llamador (main).

Las pilas son utilizadas por los compiladores en el proceso de evaluar expresiones y generar código de lenguaje máquina.