2.3 Operaciones básicas con pilas

Las pilas tienen un conjunto de operaciones muy limitado, sólo permiten las operaciones de "push" y "pop":

  • Push: Añadir un elemento al final de la pila.
  • Pop: Leer y eliminar un elemento del final de la pila.

2.4 Push, insertar elemento

Las operaciones con pilas son muy simples, no hay casos especiales, salvo que la pila esté vacía.

Push en una pila vacía

Partiremos de que ya tenemos el nodo a insertar y, por supuesto un puntero que apunte a él, además el puntero a la pila valdrá NULL:

Push en vacía
Push en vacía

El proceso es muy simple, bastará con que:

  1. nodo->siguiente apunte a NULL.
  2. Pilaa apunte a nodo.

Push en una pila no vacía

Push en pila no vacía
Push en pila no vacía

Podemos considerar el caso anterior como un caso particular de éste, la única diferencia es que podemos y debemos trabajar con una pila vacía como con una pila normal.

De nuevo partiremos de un nodo a insertar, con un puntero que apunte a él, y de una pila, en este caso no vacía:

Resultado
Resultado

El proceso sigue siendo muy sencillo:

  1. Hacemos que nodo->siguiente apunte a Pila.
  2. Hacemos que Pila apunte a nodo.

2.5 Pop, leer y eliminar un elemento

Pop
Pop

Ahora sólo existe un caso posible, ya que sólo podemos leer desde un extremo de la pila.

Partiremos de una pila con uno o más nodos, y usaremos un puntero auxiliar, nodo:

Resultado
Resultado
  1. Hacemos que nodo apunte al primer elemento de la pila, es decir a Pila.
  2. Asignamos a Pila la dirección del segundo nodo de la pila: Pila->siguiente.
  3. Guardamos el contenido del nodo para devolverlo como retorno, recuerda que la operación pop equivale a leer y borrar.
  4. Liberamos la memoria asignada al primer nodo, el que queremos eliminar.

Si la pila sólo tiene un nodo, el proceso sigue siendo válido, ya que el valor de Pila->siguiente es NULL, y después de eliminar el último nodo la pila quedará vacía, y el valor de Pila será NULL.