Para tratar de sobre-simplificar la descripción de una pila y una cola, Son ambas cadenas dinámicas de elementos de información que se puede acceder desde un extremo de la cadena y la única diferencia real entre ellos es el hecho de que:
cuando se trabaja con una pila
- insertar elementos en un extremo de la cadena y
- recuperar y/o eliminar elementos desde el mismo extremo de la cadena
mientras que con una cola
- insertar elementos en un extremo de la cadena y
- recuperar/ellos eliminar desde el otro extremo
NOTA: estoy usando la formulación abstracta de recuperar/eliminar en este contexto porque hay casos en los que acaba de recuperar el elemento de la cadena o, en cierto sentido, solo lo leyó o accedió a su valor, pero también hay instancias en las que elimina el elemento de la cadena y, finalmente, hay instancias en las que realiza ambas acciones con la misma llamada.
También se usa deliberadamente la palabra elemento para abstraer la cadena imaginaria tanto como sea posible y desacoplarla del lenguaje de programación específico términos. Esta entidad de información abstracta llamada elemento puede ser cualquier cosa, desde un puntero, un valor, una cadena o caracteres, un objeto, ... dependiendo del idioma.
En la mayoría de los casos, aunque en realidad es un valor o una ubicación de memoria (es decir, un puntero). Y el resto simplemente oculta este hecho detrás de la jerga del lenguaje <
Una cola puede ser útil cuando el orden de los elementos es importante y debe ser exactamente el mismo que cuando los elementos ingresaron por primera vez en su programa. Por ejemplo, cuando procesa una transmisión de audio o cuando almacena datos de red en búfer. O cuando haces cualquier tipo de tienda y procesa hacia adelante. En todos estos casos, necesita la secuencia de los elementos que se mostrarán en el mismo orden en que ingresaron a su programa; de lo contrario, la información puede dejar de tener sentido. Por lo tanto, podría dividir su programa en una parte que lea datos de alguna entrada, haga algún procesamiento y los escriba en una cola y una parte que recupere datos de la cola los procese y los almacene en otra cola para su posterior procesamiento o transmisión de datos .
Una pila puede ser útil cuando necesita almacenar temporalmente un elemento que se va a utilizar en los pasos inmediatos de su programa. Por ejemplo, los lenguajes de programación generalmente usan una estructura de pila para pasar variables a las funciones. Lo que realmente hacen es almacenar (o presionar) los argumentos de la función en la pila y luego saltar a la función donde eliminan y recuperan (o reventan) la misma cantidad de elementos de la pila.De esta forma, el tamaño de la pila depende del número de llamadas anidadas de funciones. Además, después de que una función ha sido llamada y haya terminado lo que estaba haciendo, ¡deja la pila exactamente en la misma condición que antes de que se la llamara! De esta forma, cualquier función puede funcionar con la pila ignorando cómo operan otras funciones con ella.
Por último, debe saber que hay otros términos utilizados por igual para conceptos similares. Por ejemplo, una pila podría llamarse montón. También hay versiones híbridas de estos conceptos, por ejemplo, una cola de doble extremo puede comportarse al mismo tiempo como una pila y como una cola, porque se puede acceder por ambos extremos simultáneamente. Además, el hecho de que una estructura de datos se le proporcione como una pila o como una cola, no significa necesariamente que se implemente como tal, hay instancias en las que una estructura de datos puede implementarse como cualquier cosa y proporcionarse como un recurso específico. estructura de datos simplemente porque se puede hacer que se comporte como tal. En otras palabras, si proporciona un método push y pop a cualquier estructura de datos, mágicamente se convierten en stacks.
Parece que han respondido a su propia pregunta - una pila es un First-Out Last-In (LIFO) de contenedores y una cola es un contenedor Primero en entrar, primero en salir (FIFO). – Iridium