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

Autómata Finito Determinista - Código C++

En esta ocasión les traigo la implementación de un AFD en lenguaje C++. Un autómata finito determinista es una quíntupla que denotaremos de manera genérica por M=(Q,Σ,q0,δ,F) , donde: Q es un conjunto finito cuyos elementos llamaremos estados.  Σ es un alfabeto que llamamos alfabeto de entrada.  q0∈Q es un estado señalado que llamamos estado inicial.  F es un subconjunto de Q no vacío, cuyos elementos llamamos estados finales.  δ es una aplicación de Q×Σ→Q , que llamamos función de transición.  Para la implementación se utiliza una matriz de transición convirtiendo los símbolos y letras del alfabeto en indices de la matriz donde los estados son las FILAS y los símbolos son las COLUMNAS, por ejemplo: Tenemos un alfabeto Σ = {a, b, c}, entonces en la matriz de transición tomara la letra 'a' como indice 0 , letra 'b' indice 1 y letra 'c' indice 2. Lo mismo seria para las transiciones, pero allí no interesa que letra representa si no cuantos estados...

Collision Shapes - Box2D & SFML

En el ámbito del desarrollo de videojuegos y simulaciones interactivas, la gestión de colisiones es un componente crítico que determina la experiencia del usuario y la interactividad del entorno virtual. Desde las interacciones entre elementos del juego hasta las respuestas del entorno, las colisiones bien implementadas son esenciales para la jugabilidad y la inmersión.  En esta oportunidad, exploraremos en detalle el tema de las colisiones en 2D, centrándonos en la implementación de Collision Shapes y el uso del polimorfismo mediante dos herramientas populares: Box2D, un motor de física de código abierto, y SFML (Simple and Fast Multimedia Library), una biblioteca gráfica multiplataforma.  Con estas herramientas, podremos crear simulaciones y juegos con colisiones precisas y realistas, agregando profundidad y dinamismo a nuestros proyectos en dos dimensiones.   IDE: CodeBlocks: http://www.codeblocks.org/ v13.12 Library: SFML: http://www.sfml-dev.org/ v2.1 Box2...

Deploy a Heroku con Laravel 5