¿Dónde se usan realmente las estructuras de datos?

Mi respuesta tratará de elaborar una aplicación real de estructuras de datos en software y hardware. Mantendría mi respuesta limitada a la aplicación de pila y cola solamente.
La elaboración de la aplicación de todas las estructuras de datos probablemente tomaría días, si no meses.

  1. APILAR
    1. Gestión de la memoria

      Cualquier entorno informático moderno utiliza una pila como modelo principal de administración de memoria para un programa en ejecución. Ya sea código nativo (x86, Sun, VAX) o JVM, una pila está en el centro del entorno de tiempo de ejecución para Java, C ++, Ada, FORTRAN, etc.
    2. Llamada y proceso de devolución

      Cuando se llama a un método / función

      Se crea un registro de activación; su tamaño depende del número y tamaño de las variables y parámetros locales.

      1. El valor del puntero base se guarda en la ubicación especial reservada para él.
      2. El valor del contador del programa se guarda en la ubicación de la dirección de retorno
      3. El puntero base ahora se restablece a la nueva base (parte superior de la pila de llamadas antes de la creación del AR)
      4. El contador de programa se establece en la ubicación del primer bytecode del método que se llama
      5. Copia los parámetros de llamada en la región de parámetros
      6. Inicializa variables locales en la región variable local

        Mientras se ejecuta el método, las variables y parámetros locales se encuentran simplemente agregando una constante asociada con cada variable / parámetro al puntero base.

        Cuando un método regresa

        Obtenga el contador del programa del registro de activación y reemplace lo que está en la PC
        Obtenga el valor del puntero base del AR y reemplace lo que hay en el BP
        Pop el AR por completo de la pila.

    3. Retroceso

      Backtracking tiene una gran aplicación en robótica, por ejemplo, mouse para resolver laberintos.

  2. COLA
    1. Cuando un recurso se comparte entre múltiples consumidores. Los ejemplos incluyen programación de CPU, programación de disco.
    2. Cuando los datos se transfieren de forma asíncrona (datos no necesariamente recibidos a la misma velocidad que los enviados) entre dos procesos. Los ejemplos incluyen memorias intermedias IO, tuberías, archivo IO, etc.
      por ejemplo, imprimir páginas usando una impresora.

PD: incluso cuando se considera Stack and Queue, las aplicaciones son demasiadas para enumerarlas.

Una receta es una estructura de datos real, como lo es una lista de compras, una guía telefónica, un diccionario, etc. Todos tienen una estructura, tienen un formato.

Necesitamos estructuras de datos, igual que los objetos del mundo real, en nuestros programas porque pensamos de esta manera como seres humanos, o al menos, se supone que debemos hacerlo.

Las estructuras de datos encuentran su aplicación en varias áreas. Déjame escribir algunas.

  1. Pila Stack es muy útil para mantener el contador del programa. Es el puntero de pila que mantiene un registro de la próxima instrucción que se ejecutará.
  2. Cola Los sistemas operativos utilizan colas para programar procesos que se ejecutarán. Cuando un proceso está listo para ejecutarse, se carga en la Lista de espera donde espera su turno para ejecutarse.
  3. Árbol binario En caso de que se trate de una gran cantidad de datos, la búsqueda de un elemento en particular es una tarea tediosa. Almacenar los datos en árboles binarios es muy útil en ese caso.
  4. Retroceso Para los juegos automatizados donde los usuarios juegan contra la computadora, Backtracking es un concepto importante que se ha incorporado. La pila es la estructura de datos que se utiliza para retroceder. El retroceso también es importante en la programación dinámica.
  5. Arreglos y Listas Vinculadas . Estas dos estructuras de datos son útiles para almacenar datos fácilmente sin mucha programación compleja. Sin embargo, buscar un artículo en particular lleva mucho tiempo.