Ir al contenido principal

Pilas en C++

Una pila (stack en inglés) es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del inglés Last In First Out, último en entrar, primero en salir) que permite almacenar y recuperar datos. Esta estructura se aplica en multitud de ocasiones en el área de informática debido a su simplicidad y ordenación implícita de la propia estructura.
Para el manejo de los datos se cuenta con dos operaciones básicas: apilar (push), que coloca un objeto en la pila, y su operación inversa, retirar (o desapilar, pop), que retira el último elemento apilado.
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:

Comentarios

  1. busco el codigo de las torres de hanoi

    ResponderEliminar
  2. Ahi tienes el link espero que te sirva:

    http://casicodigo.blogspot.com/2012/09/resursividad-torres-de-hanoi-en-c.html

    ResponderEliminar
  3. amigo me podrias agregar mas comentarios? diciendo que hace cada funcion?

    ResponderEliminar
  4. Esta chido, llevo 3 días estudiandolo, ya casi lo entiendo todo! XD

    ResponderEliminar
  5. excelente programa pero no entiendo que esta haciendo cuando agrega este codigo
    " struct nodo *sgte;"

    gracias!

    ResponderEliminar
  6. Hola Diana Rojas, respondiendo a tu pregunta vamos por partes. El *sgte el nombre de un puntero por eso lleva asterisco, ahora el struct nodo, es el tipo de dato del puntero. Y te preguntaras para que? pues es para apuntar a un dato(nodo) llamado 'struct nodo' que es del mismo tipo(struct nodo{};) ... Saludos

    PD: Un puntero siempre debe apuntar a una variable que es del mismo tipo del mismo.

    ResponderEliminar
  7. al momento de imprimir los numeros como puedo imprimir tambien nombres

    ResponderEliminar
  8. Muy buena estructura... y muy claro te felicito..!

    ResponderEliminar
  9. El codigo esta muy bien explicado, muchas gracias por fin entendi, solo que lo que aun no entiendo es cuando la pila tiene un X tamaño el cual te de un limite para ingresar elementos a la pila
    en ese caso como seria el codigo?

    ResponderEliminar
  10. hola tengo una duda que hace este signo ->?

    ResponderEliminar
  11. Gracias, como puedo hacerlo en codigo en C?

    ResponderEliminar
  12. Disculpa siguiendo tu código como sería para eliminar los elementos repetidos de una pila?

    ResponderEliminar
  13. Hola. Es posible implementar esta lista sin utilizar "typedef"?

    ResponderEliminar
    Respuestas
    1. Claro que es posible, cuando quieras usar el tipo de dato escribirias "struct nodo"
      Por ejemplo: struct nodo my_variable;
      PD: En C++ incluso creo que ni es necesario usar la palabra struct, podrias escribir solamente el nombre de la estructura "nodo", no lo he probado aún. Saludos!

      Eliminar

Publicar un comentario

Entradas populares de este blog

Obtener numeros aleatorios en C++ (rand, srand)

Es algo muy frecuente, cuando ya dominas todo eso de pedir y almacenar datos, ahora tu profesor te pedirá que tus programas generen números aleatorios para automatizar el proceso de llenar arreglos y todo eso.
Así que lo primero que tenemos que hacer es incluir la librería:
#include<stdlib.h>

Necesitamos esta libreria para usar la función time()
#include<time.h>

Luego inicializar los números aleatorios incluyendo esto:
srand(time(NULL));

Luego guardar el número aleatorio en alguna parte:
num = rand();

Para ajustar el rango de número aleatorios podemos hacer varias cosas.

- Número aleatorios entre 0 y 50:
  num=rand()%51;

- Número aleatorios entre 1 y 100:
  num=1+rand()%(101-1);

- Número aleatorios entre 250 y 420:
  num=250+rand()%(421-250);

De forma general es:
variable = limite_inferior + rand() % (limite_superior +1 - limite_inferior) ;

Así que un programa que muestre 10 números aleatorios entre 1 y 10 quedaría así:

Serie de Fibonacci en C++

Una sucesión de Fibonacci es aquella cuya ley de recurrencia es: an = an-1 + an-2. Es decir, cada término de la sucesión se obtiene sumando los dos anteriores. Para empezar a construirla necesitamos, por tanto, dos números de partida, a1 y a2. De esta forma, a3 sería a2 + a1 ; a4 sería a3 + a2 y así sucesivamente.


La más conocida es la que tiene a1 = 1 y a2 = 1, cuyos términos son: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377 ... números que son conocidos como Números de Fibonacci.

Los términos de cualquier sucesión de Fibonacci tienen la particularidad de que el cociente entre dos términos consecutivos se aproxima al Número de Oro (1.6180339887499...), es decir, el límite de los cocientes an+1/an tiende al Número de Oro cuando n tiende a infinito.

Además, las series de Fibonacci cumplen otras curiosas propiedades, como por ejemplo, que la suma de n términos es igual al término n+2 menos uno:

a1 + a2 + a3 + a4 + ..... + an-1 + an = an+2 - 1

Implementación

Árboles Binarios de Búsqueda en C++ | Recorrido por niveles (Amplitud)

Hola a todos en esta ocasión compartiré sobre este tema de Arboles Binarios de Búsqueda, como un poco de teoría para su mejor entendimiento seguidamente mostraré la implementación en lenguaje de programación C++. Primero una breve introducción a árboles.

¿Qué es un árbol?


Un árbol es una estructura de datos no lineal puesto que cada elemento apunta a uno o varios elementos del mismo tipo; esto es dado un elemento, no hay un único camino a seguir. El elemento que apunta a otro es llamado padre, mientras que el elemento apuntado se conoce como hijo. Todos los elementos tienen un padre a excepción de la raíz. Puede decirse que un árbol esta formado por subárboles resaltando así su naturaleza recursiva.

¿Qué es un árbol binario?

Un árbol binario es aquel es el que cada elemento apunta como máximo a otros 2 elementos, comúnmente llamados hijo izquierdo y hijo derecho.

¿Qué es un árbol binario de búsqueda?

Un árbol binario de buque da o ABB, es un árbol binario en el cual para todo elemento, …